工廠模式想必你們在開發過程當中會常常用到,顧名思義其就是做爲一個工廠用來生產產品的,下面來簡單介紹幾種常見的工廠模式。編程
一、類圖結構架構
二、角色分類spa
工廠類:其內部具備一點的判斷邏輯,須要根據不一樣的邏輯去生產出不一樣的產品對象
抽象產品類:主要約定建立產品的標準繼承
具體產品類:繼承抽象產品類實現其標準接口提供具體產品的建立邏輯遞歸
一、類圖結構接口
二、角色分類圖片
抽象工廠類:提供一個工廠加工的標準開發
具體工廠類:實現抽象工廠加工的標準,具體調用具體產品的相關方法進行產品的建立產品
抽象產品類:主要約定建立產品的標準
具體產品類:繼承抽象產品類實現其標準接口提供具體產品的建立邏輯
一、類圖結構
二、角色分類
指揮者:主要控制建造者建造出來的各個零散部分進行安裝,生產產品
抽象建造者:定義建造者的各個零件的構建標準
具體建造者:對產品的各個部分進行加工
具體產品類:待建立的產品類
既然咱們平常使用過程當中會出現這麼多的工廠模式,到底他們之間有什麼異同呢?或許你從編排也能看出來咱們是從簡單工廠模式、工廠方法模式、建造者模式,他們對產品的建立也是逐步逐步變得愈來愈複雜的。
一、工廠方法模式和簡單工廠模式相比多了一個抽象工廠類,這其中有什麼好處呢?
主要的原則仍是:修改關閉、擴展開放
設想一下若是咱們須要增長一個產品,這個時候簡單工廠模式是須要進入到工廠類中去修改才能實現擴展,而若是經過工廠方法模式的方式增長產品只須要擴展抽象工廠方法就能夠實現一個工廠類來建立新產品,固然代價就是會增長一個工廠類,若是產品過多會出現工廠類爆炸。不過怎麼來講工廠方法模式是簡單工廠模式的升級版。
二、工廠方法模式和建造者模式之間又是個什麼關係呢?
其實建造者模式就是比工廠方法模式多了一個「指揮者」,工廠方法模式是將一個產品建立出來供客戶端使用,而建造者模式是將產品的各個組成部分建造出來而後交由「指揮者」去進行組裝而造成最終的產品。建造者模式適用於要生產的產品足夠複雜,因此採用了遞歸構造的方式進行構造。
想必你們在編程的過程當中都是使用建造者模式進行對象的構建了吧
無論是簡單工廠模式,工廠方法模式仍是抽象工廠模式,他們具備相似的特性,因此他們的適用場景也是相似的。
首先,做爲一種建立類模式,在任何須要生成複雜對象的地方,均可以使用工廠方法模式。有一點須要注意的地方就是複雜對象適合使用工廠模式,而簡單對象,特別是只須要經過new就能夠完成建立的對象,無需使用工廠模式。若是使用工廠模式,就須要引入一個工廠類,會增長系統的複雜度。
其次,工廠模式是一種典型的解耦模式,迪米特法則在工廠模式中表現的尤其明顯。假如調用者本身組裝產品須要增長依賴關係時,能夠考慮使用工廠模式。將會大大下降對象之間的耦合度。
再次,因爲工廠模式是依靠抽象架構的,它把實例化產品的任務交由實現類完成,擴展性比較好。也就是說,當須要系統有比較好的擴展性時,能夠考慮工廠模式,不一樣的產品用不一樣的實現工廠來組裝。
我想有類圖了就不要繼續貼示例了吧,工廠模式先到這裏,後面繼續深刻刻畫。