Factory method
目的
定义一个用于创建对象的接口,让子类去决定实例化哪一个类
动机
一个框架通过抽象类来定义对象之间的关系,并且客户通过子类来定义相关对象的实现。假设有一个应用框架来显示文档,画图框架显示画图文档等,我们需要具体的子类来重定义创建文档的操作,而这个操作就叫做抽象方法。
使用范围
- 当一个类不知道它所创建的对象的类的时候;
- 当一个类希望它的子类来指定创建哪个对象的时候;
效果
- 工厂方法不会将与特定的应用有关的类绑定到代码中,代码仅仅处理product的接口;
- 客户为了创建一个product,往往需要创建一个具体的creator;
与abstract factory不同的是,factory method的工厂仅仅是一个方法,而抽象工厂里的工厂是一个类。因此抽象工厂里,客户在使用时,产品本身是固定死的;而工厂方法则需要使用到产品本身(接口)。总结就是,抽象工厂看不到产品,因此需要使用客户端和更换工程,而工厂方法直接使用产品,从而生产产品;
代码示范
1 | // Factory_method.cpp : 定义控制台应用程序的入口点。 |