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