简单工厂模式

来源:互联网 发布:好牧人12网络牧养中心 编辑:程序博客网 时间:2024/05/17 21:46

简述

简单工厂模式(Simple Factory Pattern)又叫做静态工厂方法模式(Static Factory Method Pattern),属于创建型模式。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类的实例。

值得注意的是,简单工厂模式并不属于 23 种 GoF 设计模式之一。它是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

模式结构


UML 结构图:

Simple Factory Pattern

  • 工厂(Factory):整个模式的核心,负责实现创建所有实例的内部逻辑。
  • 抽象产品(Product):所有具体产品的父类,负责描述所有实例所共有的公共接口。
  • 具体产品(ConcreteProduct):最终创建的具体产品

优缺点


优点:

  • 工厂类包含了必要的逻辑判断,根据指定的信息来创建对应的产品。客户端仅负责“消费”产品即可,实现了对象创建和使用的分离。
  • 客户端无需关心具体产品如何创建与组织,仅需知道具体产品所对应的参数即可,可以在一定程度减少使用者的记忆量。

缺点:

  • 由于工厂类集中了所有产品的创建逻辑(违反了高内聚责任分配原则),职责过重,一旦无法正常工作,整个系统都将受到影响。
  • 一旦添加新产品就不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护。

这些缺点在 C++工厂方法模式 中得到了一定的克服。

适用场景


  • 工厂类负责创建的对象比较少(不会造成工厂方法中的业务逻辑太过复杂)。
  • 客户端仅需知道传入工厂类的参数,对于如何创建对象(逻辑)不关心。

PS: 由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。

原创粉丝点击