总的来说,工厂方法是抽象工厂的组成部分,各种具体工厂类重载抽象工厂类中的方法,并用这些工厂方法创建具体产品。工厂方法的精髓在于: 一个类无法预期要生成那个类的对象,需要其子类来指定要生成的对象。
以下情形会让你自然而然的想到使用工厂方法:
- 编译时无法确定要创建对象的类
- 想让子类决定运行时创建什么
- 局部化信息。例如一个类有若干子类为其辅助类,而你想返回具体的子类的信息
工厂方法可以让创建出来的产品有一组共同的行为,而且客户端无需修改任何代码就可以拥有不同的产品,当你想加入新产品的时候,只需增加一个子类,无需修改客户端代码。