【从零开始学习计算机科学】设计模式(二)工厂模式、抽象工厂模式、单例模式、建造者模型、原型模式
【从零开始学习计算机科学】设计模式(二)工厂模式、抽象工厂模式、单例模式、建造者模型、原型模式
-
- 工厂模式
-
- 主要特点
- 类型
- 适用场景
- 抽象工厂模式
-
- 主要特点
- 工作原理
- 适用场景
- 举例
- 优点
- 缺点
- 总结
- 单例模式
-
- 主要特点
- 工作原理
- 适用场景
- 优点
- 缺点
- 总结
- 建造者模式
-
- 主要特点
- 工作原理
- 适用场景
- 优点
- 缺点
- 总结
- 原型模式
-
- 主要特点
- 工作原理
- 适用场景
- 优点
- 缺点
- 总结
工厂模式
工厂模式(Factory Pattern)是一种常用的创建型设计模式,目的是通过工厂方法来创建对象,而不是直接在客户端代码中实例化对象。工厂模式将对象的创建与使用分离,使得客户端无需了解创建对象的具体过程,从而减少了系统之间的耦合。
主要特点
- 封装对象创建:客户端不直接创建对象,而是通过工厂类来生成对象。
- 解耦:客户端只关心需要什么类型的对象,而不需要知道具体的创建过程或对象的实现细节。
类型
- 简单工厂模式:由一个工厂类决定实例化哪个产品。
- 工厂方法模式:每个子类负责实例化具体的产品,工厂方法将创建工作委托给具体的子类。
- 抽象工厂模式:提供一个接口用于创建一系列相关或相互依赖的产品,而不需要指定具体类。
适用场景
- 当系统不想或不能依赖于产品的具体实现时。
- 客户端只关心产品类型,而不关心具体如何创建时。
- 产品类的创建逻辑复杂,需要封装的情况。
抽象工厂模式
抽象工厂模式是一种创建型设计模式,它提供了一个接口,用于创建一系列相关或相互依赖的对象,而无需指定具体类。换句话说,抽象工厂模式允许客户端通过一个工厂接口来创建多个产品,而不需要知道具体的产品类。
主要特点
- 产品族:抽象工厂模式关注创建一组相关的产品。每个具体工厂可以生产一系列相关的产品。
- 解耦产品创建:客户端通过工厂接口来获取不同类型的产品,而不关心这些产品的具体实现。
工作原理
- 定义一个抽象工厂接口,声明一组方法用于创建产品。
- 为每一组相关的产品创建一个具体工厂类来实现这个接口。
- 产品由多个接口定义,每个产品系列都会有一个对应的具体产品类。
适用场景
- 当需要创建多个相关对象,并且系统不希望依赖于具体的类时。
- 当产品族(系列)较多,并且产品间有相互依赖时,抽象工厂模式可以很好的组织和管理这些对象的创建。
- 当系统需要切换不同的产品族时,抽象工厂可以提供一个统一的接口。
举例
如果一个系统需要支持多种主题(如深色、浅色主题),每种主题可能包含不同类型的按钮、菜单、对话框等。使用抽象工厂模式,可以为每种主题创建一组相关的界面组件,而客户端通过工厂接口获取这些组件,而无需知道具体实现。
优点
- 客户端与具体类解耦,灵活性较强。
- 易于