工廠模式用於建立對象時,有簡單工廠,工廠方法、抽象工廠。數據庫
簡單工廠:由一個工廠對象決定建立哪一個實例的對象。簡單工廠適用於建立對象少的場景,客戶端只須要傳入參數,對於如何建立不用關心。緩存
缺點:工廠類職責太重,不易於擴展複雜結構的實例對象,不符合開閉原則。性能
工廠方法:是指定義一個建立對象的接口,各個不一樣對象都有分別的工廠類來實現,讓實例化這個接口的類來決定實例化哪一個類,工廠方法讓類的實例化推遲到子類中進行。對象
在工廠方法模式中,用戶只需關注建立的接口
對象在哪一個工廠中,不需知道建立細節,符合開閉原則。產品
抽象工廠:是指提供一個建立一系列相關或相互依賴的對象的接口,適合使用與相似於二維的、比較複雜的場景。好比場景可分爲產品族、產品等級結構兩個維度的場景。擴展
將兩個維度的相關類分別建立接口,並分別實現。每一個產品族都須要一個工廠。方法
優勢:很清晰的描述了這樣複雜場景。數據
缺點:不符合開閉原則、增長了系統的抽象性與理解難度。(只要不是系統頻繁升級,能夠不知足開閉原則。好比隔半年、一年客戶端
應用:在JDBC鏈接數據庫時就用到了抽象工廠,以前在每次使用時都要建立數據庫鏈接,每次建立都十分耗費性能,影響業務調用時間。用了以後,它將數據
庫鏈接建立好以後放到緩存中緩存者,在每次業務調用時只需現取現用。