首页/开发/代码质量与评审速查/工厂方法 vs 抽象工厂:何时再升一层
设计原则与模式62 条

工厂方法 vs 抽象工厂:何时再升一层

工厂方法创建单一产品;抽象工厂创建相互关联的一族产品:当出现「同一主题的多个产品必须配套」时再升抽象工厂,否则单产品工厂足够。

单产品Factory Method(一个创建点)
产品族Abstract Factory(一组配套创建点)
信号配套约束:选 A 主题必须同时选 A 的附件

判断问题

判断问题
Q1: 需要创建多种「相关」产品且必须配套吗?
    否 → 工厂方法 / 静态工厂
    是 → 抽象工厂
Q2: 产品种类还会持续增加吗?
    是 → 评估接口拆分粒度与演进成本

易错点

  • 产品无需配套却用抽象工厂:接口面空转
  • 产品族频繁扩种仍不拆接口:所有工厂被迫同步修改

数据来源与参考

  • 《设计模式》(GoF)· Factory Method 与 Abstract Factory 对比
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌