【从零开始学习计算机科学】设计模式(二)工厂模式、抽象工厂模式、单例模式、建造者模型、原型模式

发布于:2025-03-21 ⋅ 阅读:(18) ⋅ 点赞:(0)

工厂模式

工厂模式(Factory Pattern)是一种常用的创建型设计模式,目的是通过工厂方法来创建对象,而不是直接在客户端代码中实例化对象。工厂模式将对象的创建与使用分离,使得客户端无需了解创建对象的具体过程,从而减少了系统之间的耦合。

主要特点

  • 封装对象创建:客户端不直接创建对象,而是通过工厂类来生成对象。
  • 解耦:客户端只关心需要什么类型的对象,而不需要知道具体的创建过程或对象的实现细节。

类型

  • 简单工厂模式:由一个工厂类决定实例化哪个产品。
  • 工厂方法模式:每个子类负责实例化具体的产品,工厂方法将创建工作委托给具体的子类。
  • 抽象工厂模式:提供一个接口用于创建一系列相关或相互依赖的产品,而不需要指定具体类。

适用场景

  • 当系统不想或不能依赖于产品的具体实现时。
  • 客户端只关心产品类型,而不关心具体如何创建时。
  • 产品类的创建逻辑复杂,需要封装的情况。

抽象工厂模式

抽象工厂模式是一种创建型设计模式,它提供了一个接口,用于创建一系列相关或相互依赖的对象,而无需指定具体类。换句话说,抽象工厂模式允许客户端通过一个工厂接口来创建多个产品,而不需要知道具体的产品类。

主要特点

  • 产品族:抽象工厂模式关注创建一组相关的产品。每个具体工厂可以生产一系列相关的产品。
  • 解耦产品创建:客户端通过工厂接口来获取不同类型的产品,而不关心这些产品的具体实现。

工作原理

  • 定义一个抽象工厂接口,声明一组方法用于创建产品。
  • 为每一组相关的产品创建一个具体工厂类来实现这个接口。
  • 产品由多个接口定义,每个产品系列都会有一个对应的具体产品类。

适用场景

  • 当需要创建多个相关对象,并且系统不希望依赖于具体的类时。
  • 当产品族(系列)较多,并且产品间有相互依赖时,抽象工厂模式可以很好的组织和管理这些对象的创建。
  • 当系统需要切换不同的产品族时,抽象工厂可以提供一个统一的接口。

举例

如果一个系统需要支持多种主题(如深色、浅色主题),每种主题可能包含不同类型的按钮、菜单、对话框等。使用抽象工厂模式,可以为每种主题创建一组相关的界面组件,而客户端通过工厂接口获取这些组件,而无需知道具体实现。

优点

  • 客户端与具体类解耦,灵活性较强。
  • 易于