Factory Method (Virtual Constructor) miniWiki

Factory Method (Virtual Constructor)

意图

Define an interface for creating an object, but let subclasses decide which class to instantiate.

为创建某种产品的对象定以一个接口,由子类确定创建哪种具体产品。

用途

  • 一个类无法预知待创建产品的具体类型。
  • 一个类希望由其子类来决定待创建产品的具体类型。

类图

参与者

  • 抽象产品 (AbstractProduct)
    • 工厂方法所创建的对象声明接口。
  • 具体产品 (ConcreteProduct)
    • 实现抽象产品的接口。
  • 抽象创建者 (AbstractCreator)
    • 声明工厂方法 (Create()),以抽象产品(的指针)为返回类型。
    • 工厂方法可以是抽象方法,也可以给出默认实现。
    • 其他方法 (OtherMethod()) 可以通过调用工厂方法来创建抽象产品
  • 具体创建者 (ConcreteCreator)
    • 实现抽象创建者中的工厂方法,以具体产品(的指针)为返回类型。