1.简单工厂
简单工厂不属于23种设计模式。简单工厂要素:抽象产品类,具体产品类,一个工厂
![](https://img.haomeiwen.com/i4094034/fef08fd4bf27f5ae.png)
![](https://img.haomeiwen.com/i4094034/dccb52ee28418358.png)
![](https://img.haomeiwen.com/i4094034/0e32523cd02e65f8.png)
![](https://img.haomeiwen.com/i4094034/36cd30142864abad.png)
优点:如果有产品的修改,只需要修改工厂类即可。
缺点:不符合开闭原则和单一职责原则,一个工厂类生产所有产品,会导致类臃肿且类的职责不明确。
2.工厂方法
工厂方法要素:抽象产品类,具体产品类,抽象工厂类-对应抽象产品类,具体工厂-每一个具体产品对应一个具体工厂.
![](https://img.haomeiwen.com/i4094034/11b76493404072e4.png)
![](https://img.haomeiwen.com/i4094034/0eb588ecb4303386.png)
![](https://img.haomeiwen.com/i4094034/931f7ce59748b53a.png)
优点:符合开闭原则和单一职责原则;
缺点:每一个产品都有一个具体工厂,导致类增多。
3.抽象工厂
抽象工厂要素:抽象产品类,具体产品类,抽象工厂-生产一系列相关产品,具体工厂-生产不同分类的产品
![](https://img.haomeiwen.com/i4094034/298f9cbadb288cbe.png)
![](https://img.haomeiwen.com/i4094034/a7a617a7afd295c3.png)
优点:一个工厂可以生产多个同类产品,符合单一职责原则,且横向扩展产品分类只需进行类的扩展(如增加进口水果只需要增加一个进口水果的工厂类),符合开闭原则
缺点:纵向扩展产品细则(如增加香蕉产品),需要修改工厂接口且实现类都需要进行实现,违反开闭原则。
抽象工厂重点在需要细致分析产品分类,生产的产品的共同点抽象在抽象类中,不同点通过不同工厂进行生产。
网友评论