简单工厂、工厂方法、抽象工厂。
所谓的工厂,就是生产东西的。在设计模式这里,工厂就是返回对象的。所以工厂方法、抽象工厂都是创建型的设计模式(简单工厂不算在23种设计模式里面)。
简单工厂、工厂方法、抽象工厂,一个比一个复杂,但又互有关联,比如工厂方法可以退化成简单工厂,工厂方法可看成特殊的抽象工厂。
1、简单工厂
简单工厂最简单,主要是一个包办一切的工厂类,根据参数,返回相应的对象。这些对象通常都继承自同一个抽象类或接口。
缺点是要生产新对象,要改工厂类。
2、工厂方法
有一个抽象工厂类,然后多个具体工厂类继承自该抽象类。每个工厂类只负责生产一种对象。简单工厂只有一个生产类,工厂方法是多个生产类。
相比简单工厂,要生产新的对象,只需添加新的工厂类即可。
如果只有一个具体工厂类,工厂方法就退化成了简单工厂。
3、抽象工厂
工厂方法一个工厂类生产一种对象,产品多的话,类未免太多了一点。抽象工厂是一个工厂类可以生产一组对象。因此,工厂方法可以看做是特殊的抽象工厂。
如果一个工厂类只生产一个对象,则抽象工厂退化成工厂方法。