1、动机
- 在软件工程中,经常面临对象的创建工作,由于需求的变化,需要创建的对象的具体类型也是变化的。
- 避开常规的对象创建方法(new),提供一种封装的机制来避免客户程序和这种对象创建工作之间的紧耦合。
- 将类的实例化工作延迟到子类中。
2、类结构
上述实现方式具体产品和具体工厂是一一对应的关系。
3、使用方式
客户程序根据需要实例化工厂对象,并通过工厂对象提供的接口创建具体的产品对象。
4、总结
- 工厂模式用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系会导致软件的脆弱。
- 工厂模式通过面向对象的手法(多态),将具体对象的创建工作延迟到子类,从而实现一种扩展的策略,较好的解决了这种紧耦合的关系,此方法符合开闭原则(OCP)
- 工厂模式解决了单个对象的需求变化。
- 要求创建方法/参数相同(缺点) ,在产品类型增加时则需要同时创建产品类型和与之对应的工厂类,类的数量会成倍的增加,一定程度上增加了程序的复杂度
- 只能针对一类类的创建,如果需要创建不同类,则本方法不适用(缺点);如果需要针对一系列类,那么可以使用抽象工厂模式。