首页/开发/代码质量与评审速查/工厂方法 Factory Method(创建型)
设计原则与模式62 条

工厂方法 Factory Method(创建型)

让子类/实现方决定实例化哪个具体类:调用方依赖创建接口而非具体类型,新增产品时扩展工厂实现即可;简单场景用静态工厂函数与之等效。

意图把实例化推迟到实现方
参与者Product、Creator(工厂)、ConcreteCreator
变体静态工厂方法(命名构造器)

Java 示例

Java 示例
abstract class Dialog {
    abstract Button createButton();
    void render() { createButton().paint(); }
}
class WindowsDialog extends Dialog {
    Button createButton() { return new WindowsButton(); }
}

易错点

  • 工厂只返回一种实现:接口层空转,可先退回直接构造
  • 工厂里写业务分支:职责扩散,工厂成为上帝类

数据来源与参考

  • 《设计模式》(GoF)· Factory Method
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌