具体工厂类ConcreteFactory都具有同一父类接口Factory, 因此工厂方法模式又称为多态工厂模式
工厂方法模式完全符合开闭原则,有利于系统的扩展和维护....,通过子类对象覆盖父类对象,从而使得系统得以扩展
通过将创建具体产品的任务交由工厂类的具体工厂实现来完成,客户端不需要关心具体产品类的创建, 需要的时候动态指定产品的具体工厂实现即可....,符合开闭原则
对客户端隐藏了具体实现,客户端只需要关心具体的工厂实现即可
缺点:
每次增加一个产品,都需要增加一个具体工厂实现类和具体产品类,这样使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度...系统中提供一个产品类的库,客户端不依赖具体产品的实现,所有产品以同样的接口出现
系统结构稳定,不会频繁增加产品族
抽象工厂模式问题: 开闭原则的倾斜性
抽象工厂模式中开闭原则的倾斜性是指在抽象工厂模式中...,不需要修改已有的代码
增加产品族: 对于增加新的产品族的产品等级结构,需要修改所有的工厂角色,包括抽象工厂类,在所有的工厂类中都需要增加生产新产品族产品的方法,这是违背了开闭原则的
因为抽象工厂模式存在开闭原则的倾斜性