工厂模式:三种模式详解
工厂模式是一种创建对象的设计策略,它简化了对象的创建过程,分为简单工厂、工厂方法和抽象工厂三种模式。
1. 创建型模式
- 简单工厂模式: 适用于对象构造过程相对简单且相似的情况,如图形绘制工具创建圆形、矩形等。它通过工厂类的静态方法,隐藏了对象的具体创建细节。
- 工厂方法模式: 当对象构造过程各异,需要在运行时根据条件动态创建时,采用工厂方法模式,如不同类型的日志记录器。它通过接口推迟了具体对象的创建。
- 抽象工厂模式: 适用于创建一组相关对象,如跨平台 GUI 工具箱,它提供创建一系列组件的接口,允许创建不同平台的组件集合。
2. 适用场景
- 简单工厂模式:用于构造相似对象,如图形工具。
- 工厂方法模式:当需要根据条件灵活创建对象,如日志记录器。
- 抽象工厂模式:创建一组相互依赖的对象,如跨平台 GUI 组件。
3. 优缺点
优点:简化了客户端对创建过程的了解,增强了代码的灵活性和可扩展性。
缺点:增加了额外的抽象层次,可能导致代码复杂度提高。
示例代码
- 简单工厂模式 (C++): 通过ShapeFactory创建Shape子类对象。
- 工厂方法模式 (C++): 通过ShapeFactory接口和具体工厂类(如CircleFactory, RectangleFactory)创建对象。
- 抽象工厂模式 (C++): 通过GUIFactory创建不同平台的Button和Checkbox对象,如WindowsGUIFactory和MacOSGUIFactory。