更新時間:2022-09-05 10:02:31 來源:動力節點 瀏覽1722次
工廠模式有3種,優點也各不相同:
1.簡單工廠模式可以決定在什么時候創建哪一個產品類的實例
2.工廠方法模式有非常良好的擴展性
3.抽象工廠模式降低了模塊間的耦合性,提高了團隊開發效率。
工廠類含有必要的判斷邏輯,可以決定在什么時候創建哪一個產品類的實例,客戶端可以免除直接創建產品對象的責任,而僅僅"消費"產品。
簡單工廠模式通過這種做法實現了對責任的分割,能夠根據外界給定的信息,決定究竟應該創建哪個具體類的對象。通過它,外界與具體類隔離開來,偶合性低。明確區分了各自的職責和權力,有利于整個軟件體系結構的優化。
工廠方法模式每個具體工廠類只完成單一任務,代碼簡潔。工廠方法模式完全滿足OCP,即它有非常良好的擴展性。
抽象工廠模式主要在于應對“新系列”的需求變化。
它只需改變具體的工廠即可使用不同的產品配置,這是因為一個抽象工廠創建了一個完整的產品系列,所以整個產品系列會立刻改變。它有利于產品的一致性。當一個系列的產品對象被設計成一起工作時,一個應用一次只能使用同一個系列中的對象,這一點很重要,而抽象工廠很容易實現這一點。抽象工廠模式有助于這樣的團隊的分工,降低了模塊間的耦合性,提高了團隊開發效率。
該模式不屬于GoF列出的23種模式之一,但它確是學習其他幾個工廠模式的基礎,也是最容易的。
它實現了創建對象和使用對象分離的原則,由工廠類來負責對象的創建。比如,一個形狀Shape抽象類,它是其他具體形狀類的父類。
該模式存在缺陷:當有新的產品(如具體形狀Heart)需要添加時,不得不修改工廠類的源代碼,這違背了設計模式的開閉原則(有關開閉原則請讀者自行了解)。
這是解決簡單工廠模式缺陷的升級模式。
當類的數量龐大時,可以給每一個類構建對應的工廠類,調用者不必考慮類的創建而只用來配置和使用類的對象。
工廠方法模式在具體的工廠類中也可以提供多種方法來初始化創建類的實例,調用者只需傳入需要的參數即可。每個具體的工廠類對應具體的產品類,都實現了一個抽象工廠接口和抽象產品接口,因此此模式也稱多態工廠模式。
缺點:當類過多時勢必引起類文件的臃腫,增加了代碼的開銷。所以,抽象工廠模式隨之出現了。
可以創建一系列相關聯的產品,而不是對每一個產品都對應一個工廠類。
它與工廠方法模式的區別在于:工廠方法對每一個產品都提供一個工廠類,而抽象工廠模式統一為相關聯的產品(一個產品家族,如某品牌制作的電視、電腦等;某樣式庫下的按鈕、文本框等)提供一個具體工廠類,在此類中定義用來創建各個具體產品的各個方法,這樣一個工廠類可以創建一個產品族(包含多個相關聯產品)的對象,極大減少了類的數量。
通過上述介紹,相信大家對工廠模式的好處已經有所了解,大家如果對此比較感興趣,想了解更多相關知識,不妨倆關注一下動力節點的Java設計模式技術文檔,里面有更豐富的知識等著大家去學習,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習