1.工厂方法是由简单工厂模式演变而来,依赖于工厂角色和产品角色的多态性,是为了改善:
(1)简单工厂模式当产品结构太复杂时,工厂类逻辑太过复杂的问题,
(2)简单工厂添加新产品时需要修改工厂类中工厂方法的代码,而破坏了“开闭原则”的问题
2.工厂方法返回的是抽象的产品接口,如果退化为返回一个具体的产品对象,针对产品的多态性丧失了,就失去了工厂方法的用意。
3.并不是所有返回新对象的方法都是工厂方法。
4.工厂方法模式通常和模板方法模式一起使用,工厂方法模式将创建工作推延给子类,模板方法模式将具体的实现工作推延给子类。所以通常在工厂方法的抽象工厂接口里加入一个模板方法,代表某个顶级逻辑,这个顶级逻辑调用的方法在具体工厂子类里实现。
5.工厂方法模式与MVC模式,MVC是框架级的模式,可以分解出多个设计模式,和工厂角色创建合适的产品角色一样,控制器controller创建合适的视图对象view,工厂方法的客户端可以作为模型端model。
6.享元模式 flyweight 使用了带有循环逻辑的工厂方法模式。