工廠模式想必大家在開發過程中會經常用到,顧名思義其就是作為乙個工廠用來生產產品的,下面來簡單介紹幾種常見的工廠模式。
1、類圖結構
2、角色分類
1、類圖結構
2、角色分類
1、類圖結構
2、角色分類
既然我們日常使用過程中會出現這麼多的工廠模式,到底他們之間有什麼異同呢?或許你從編排也能看出來我們是從簡單工廠模式、工廠方法模式、建造者模式,他們對產品的建立也是逐步逐步變得越來越複雜的。
1、工廠方法模式和簡單工廠模式相比多了乙個抽象工廠類,這其中有什麼好處呢?
設想一下如果我們需要增加乙個產品,這個時候簡單工廠模式是需要進入到工廠類中去修改才能實現擴充套件,而如果通過工廠方法模式的方式增加產品只需要擴充套件抽象工廠方法就可以實現乙個工廠類來建立新產品,當然代價就是會增加乙個工廠類,如果產品過多會出現工廠類**。不過怎麼來說工廠方法模式是簡單工廠模式的公升級版。
2、工廠方法模式和建造者模式之間又是個什麼關係呢?
其實建造者模式就是比工廠方法模式多了乙個「指揮者」,工廠方法模式是將乙個產品建立出來供客戶端使用,而建造者模式是將產品的各個組成部分建造出來然後交由「指揮者」去進行組裝而形成最終的產品。建造者模式適用於要生產的產品足夠複雜,所以採用了遞迴構造的方式進行構造。
想必大家在程式設計的過程中都是使用建造者模式進行物件的構建了吧
不管是簡單工廠模式,工廠方法模式還是抽象工廠模式,他們具有類似的特性,所以他們的適用場景也是類似的。我想有類圖了就不要繼續貼示例了吧,工廠模式先到這裡,後面繼續深入刻畫。首先,作為一種建立類模式,在任何需要生成複雜物件的地方,都可以使用工廠方法模式。有一點需要注意的地方就是複雜物件適合使用工廠模式,而簡單物件,特別是只需要通過new就可以完成建立的物件,無需使用工廠模式。如果使用工廠模式,就需要引入乙個工廠類,會增加系統的複雜度。
其次,工廠模式是一種典型的解耦模式,迪公尺特法則在工廠模式中表現的尤為明顯。假如呼叫者自己組裝產品需要增加依賴關係時,可以考慮使用工廠模式。將會大大降低物件之間的耦合度。
再次,由於工廠模式是依靠抽象架構的,它把例項化產品的任務交由實現類完成,擴充套件性比較好。也就是說,當需要系統有比較好的擴充套件性時,可以考慮工廠模式,不同的產品用不同的實現工廠來組裝。
設計模式 工廠模式 抽象工廠模式
建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...
設計模式 工廠設計模式
用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...
設計模式 工廠設計模式
工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...