跳到主要内容

简单工厂 Simple Factory

class + creational 类式 创建类

可能是现代编程语言中最常见的设计模式

目的

  • 创建对象时不用向用户暴露实例化对象 (开闭原则)
  • 涉及到通过通用接口创建对象(依赖倒置原则)

概念

简单工厂模式,也被称为静态工厂方法(Factory Method Pattern)

  • 基于不同的参数,可以返回不同的实例类
  • 简单工厂模式具体定义了一个专门负责创建其他类的实例的类
  • 这些实例往往最终要有同一个父类

模式结构

  • 工厂
  • 产品:Abstract product role
  • 扩展产品:Concrete product role

扩展

  • 使用 static 关键字可以使函数和方法便于被访问,并且 memory-efficient,用户只需要向工厂提供一个参数
  • 参数能被存储在如 XML 格式的配置文件当中,减少对源代码的修改

优点

  • 将一个对象的创建和使用解耦
  • 用户不需要知道产品类,只需要传递参数
  • 通过修改配置文档,可以在不修改客户侧代码的情况下扩展产品类,提升了可扩展性

缺陷

  • 工厂类的指责相对来说较重
  • 当新产品被添加,工厂逻辑必须被 rivised 和 recoded,这破坏了开闭原则
  • 增加了系统中类的数量
  • 如果使用静态工厂,则工厂不存在很好的继承结构,限制了工厂的扩展性

什么场景该使用工厂模式

  • 产品的数量比较少,这样工厂方法不会过于复杂
  • 用户只需要产品的参数,不需要关心产品如何被创建