• 模式定义

定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method是一个类的实例化延迟到其子类。

  • 模式结构

大话设计模式 - 工厂方法(Factory Method)模式_工厂方法模式


Product:定义工厂方法创建对象的接口,也就是实际需要使用的对象的接口。

ConcreteProduct:具体的Product接口的实现对象。

Creator:创建器,声明工厂方法,工厂方法通常会返回一个Product类型的实例对象,而且是抽象方法,也可以在Creator里面提供工厂方法的默认实现,让工厂方法返回一个缺省的Product类型的实例对象。

ConcreteCreator:具体的创建器,需要实现Creator定义的工厂方法,返回具体的Product的实例。


  • 工厂方法模式的调用顺序图

大话设计模式 - 工厂方法(Factory Method)模式_工厂方法模式_02

  • 模式的本质

延迟到子类来选择实现

  • 模式缺点

    具体产品对象和工厂方法紧耦合

  • 具体例子