Book-深入设计模式-工厂方法模式

Book-深入设计模式-工厂方法模式

https://refactoringguru.cn/design-patterns/factory-method

工厂方法模式
亦称:虚拟构造函数、Virtual Constructor、Factory Method

工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。(只是改变了程序中调用构造函数的位置而已)

![](.\factory-method structure.png)

工厂方法模式适合应用场景

  1. 当你在编写代码的过程中, 如果无法预知对象确切类别及其依赖关系时, 可使用工厂方法。
  2. 如果你希望用户能扩展你软件库或框架的内部组件, 可使用工厂方法。
  3. 如果你希望复用现有对象来节省系统资源, 而不是每次都重新创建对象, 可使用工厂方法。

实现方式

  1. 让所有产品都遵循同一接口。 该接口必须声明对所有产品都有意义的方法。

  2. 在创建类中添加一个空的工厂方法。 该方法的返回类型必须遵循通用的产品接口。

  3. 在创建者代码中找到对于产品构造函数的所有引用。 将它们依次替换为对于工厂方法的调用, 同时将创建产品的代码移入工厂方法。
    可能需要在工厂方法中添加临时参数来控制返回的产品类型。
    工厂方法的代码看上去可能非常糟糕。 其中可能会有复杂的 switch分支运算符, 用于选择各种需要实例化的产品类。 但是不要担心, 我们很快就会修复这个问题。

  4. 为工厂方法中的每种产品编写一个创建者子类, 然后在子类中重写工厂方法, 并将基本方法中的相关创建代码移动到工厂方法中。

  5. 如果应用中的产品类型太多, 那么为每个产品创建子类并无太大必要, 这时你也可以在子类中复用基类中的控制参数。

  6. 如果代码经过上述移动后, 基础工厂方法中已经没有任何代码, 你可以将其转变为抽象类。 如果基础工厂方法中还有其他语句, 你可以将其设置为该方法的默认行为。

posted @ 2023-03-05 17:48  Theseus‘Ship  阅读(5)  评论(0编辑  收藏  举报
Live2D