更新時間:2022-09-05 10:02:31 來源:動力節(jié)點 瀏覽2077次
工廠模式有3種,優(yōu)點也各不相同:

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