设计模式之Factory
設計模式之Factory
2016-08-04 11:57
設計模式總共有23種模式這種都僅僅是為了一個目的:解耦+解耦+解耦...(高內聚低耦合滿足開閉原則)
介紹:
Factory Pattern有3種當然是全部是creational pattern。
1.Simple Factory Pattern
2.Factory Method Pattern
3.Abstract Factory Pattern
這三個Pattern都以在之前模式基礎上演變而來。
Factory Pattern是把同一類型的東西都封裝在了Factory類中,使用什么Product只要通過Factory創建就可以了。
1.Simple Factory Pattern
簡單工廠模式僅僅把product類封裝在一個類中。并沒有使用抽象類。
模式結構:
簡單工廠模式只要了解就行。因為缺點比較多。
比如說增加一個ConcreteProductC的時候需要改動Factory類,只明顯違背了開閉原則。
2.Factory Method Pattern
在工廠方法模式中優化了一下簡單工廠模式。它考慮到了今后會擴展。
改善方式如下:
不難看出它比簡單工廠模式多了以個抽象類當做工廠類的父類。每一個具體工廠類只負責創建一個具體產品。
模式結構:
這種模式把每一個產品都由獨立的一個具體工廠類去負責創建。這樣今后擴展那么就可以滿足開閉原則。
只需添加一個ConcreteFactory+ConcreteProduct就可以了。
在客戶端代碼中只需:
Factory factory; Product product; factory=new ConcreteFactory; product =factory.factoryMethod;
如果你想創建其他的product那么只需更改對應的具體工廠即可。
但是此種模式還是有缺點的。雖然它滿足了開閉原則,但是一個工廠只創建一個產品,這使得今后增加多個產品時需創建多個工廠。類的數量聚居膨脹。
3.Abstract Factory Pattern
在抽象工廠模式中優化了一下工廠方法模式。它考慮到了今后會擴展導致工廠巨增開學比較大的問題。
在抽象工廠模式中引入了一個產品族的概念。也就是說如果是一個產地的東西那么就由一個工廠去負責。并且一個工廠會有多個部門(方法)來負責每一個產品的創建。
模式的結構:
從模式的結構中可以看出。抽象工廠模式在工廠方法模式的基礎上在ConcreteFactory中增加了多個createProduct的方法。
這樣一來就不用增加一個產品時需加一個工廠了。但是抽象工廠也有很多問題例如他又不滿足開閉原則了。
總結
以上是生活随笔為你收集整理的设计模式之Factory的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从骁龙765G升到骁龙8+价格反而便宜了
- 下一篇: 那些年我们一起追逐的多线程(Thread