工厂方法模式(Factory Method)

发布时间 2023-05-04 15:24:33作者: 街酒

工厂方法模式

模式动机

image
与简单工厂模式相比新加了抽象工厂接口

模式定义

  • 工厂方法模式(Factory Method Pattern)简称工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。
  • 在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。

模式结构

image

模式分析

  • 工厂方法模式是简单工厂模式的迚一步抽象和推广
  • 工厂方法模式保持了简单工厂模式的优点,并克服了它的缺点
  • 核心的工厂类丌再负责所有产品的创建,而是将具体创建工作交给其子类去完成
  • 可以允许系统在丌修改工厂角色的情况下引进新产品
  • 增加具体产品-->增加具体工厂,符合“开闭原则

模式优点

  • 工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节
  • 能够让工厂自主确定创建何种产品对象,而如何创建这个对象的细节则完全封装在具体工厂内部
  • 在系统中加入新产品时,完全符合开闭原则

模式缺点

  • 系统中类的个数将成对增加,在一定程度上增加了系统的复杂度,会给系统带来一些额外的开销
  • 增加了系统的抽象性和理解难度

使用情形

  • 客户端丌知道它所需要的对象的类(客户端丌需要知道具体产品类的类名,只需要知道所对应的工厂即可,具体产品对象由具体工厂类创建)
  • 抽象工厂类通过其子类来指定创建哪个对象