1. 模式简介
建造者模式是一种创建型设计模式,用于分步骤构建一个复杂对象,允许通过同一构建过程生成不同的表示。这个模式将对象的构建过程与表示分离,使得相同的构建过程可以创建不同的对象。
这种模式特别适合于构建包含多个组成部分的复杂对象,而不同的部分可能需要灵活配置或选择性地组合。与工厂模式不同的是,建造者模式关注的是对象构建的步骤,而不仅是选择具体产品类。
2. 适用场景
-
构建复杂对象:如果对象有许多部分或组件,每个组件可能有多个选项,可以使用建造者模式分步骤构建对象。
-
细粒度的控制:需要精确控制对象构建的步骤、顺序和细节,而不是简单地生成对象。
-
对象的表示和创建过程独立:当需要让同样的构建过程创建不同表示的对象时。
例如,假设我们有一个“豪华电脑”的构建需求,有CPU、GPU、内存、硬盘、操作系统等组件,并希望能够灵活选择这些组件。使用建造者模式可以通过分步骤选择不同的配置,最终构建出符合特定需求的电脑。
3. 建造者模式的结构
建造者模式包括以下角色:
-
产品 (Product):即要创建的复杂对象。
-
抽象建造者 (Builder):定义创建产品各部分的接口。
-
具体建造者 (ConcreteBuilder):实现 Builder 接口,完成产品的具体构造步骤。
-
指挥者 (Director):指导建造者构建产品的流程,但不会涉及具体的构建细节。
4. C++ 实现示例
我们以创建一个电脑 (Computer) 对象为例,实现建造者模式。电脑由多个部分组成,比如 CPU、GPU、内存、硬盘、操作系统等。不同的电脑配置可能使用不同的这些组件。
代码实现
#include <iostream>
#include <memory>
#include <string>
// Step 1: 产品类 - 定义要构建的复杂对象,即电脑
class Computer {
public:
void setCPU(cons