意图:
定义一个创建对象的接口,让子类决定实例化哪一个类。
别名:
虚构造器。
动机:
框架 使用 抽象类定义和维护对象之间的关系。这些对象的创建也由框架负责。
适用性:
当一个类,不知道它所必须创建的类的类型。
当一个类,希望由它的子类,来指定它所创建的对象时。
参与者:
Product: 定义工厂创建的对象的接口。
ConcreateProduct:实现Product接口。
Creator:声明工厂方法。
ConcreateCreator:重定义工厂方法,返回一个ConcreateProduct的实例。
问题:
Creator依赖它的子类ConcreateCreator来定义工厂的方法,所以它返回一个ConcreateProduct的实例。
所以一个ConcreateProduct需要一个Creator实例。
两种方法:
(1) Creator是一个纯虚类。(必须由子类来实现。必须得实例化子类)
(2) Creator是一个具体的类,且提供缺省的方法。子类可定重新定义它的创建方式。