← 返回博客列表

模式特点

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式关注逐步构建复杂对象。

类图

类图

应用场景

示例代码(C++)

// 产品类
class Computer {
public:
    std::string cpu, gpu, ram, storage;
    void show() { std::cout << "CPU:" << cpu << " GPU:" << gpu << std::endl; }
};

// 抽象建造者
class ComputerBuilder {
protected:
    Computer* m_computer;
public:
    virtual ComputerBuilder& setCpu(const std::string& cpu) = 0;
    virtual ComputerBuilder& setGpu(const std::string& gpu) = 0;
    virtual Computer* build() = 0;
    virtual ~ComputerBuilder() = default;
};

// 具体建造者 - 链式调用
class GamePCBuilder : public ComputerBuilder {
public:
    GamePCBuilder() { m_computer = new Computer(); }
    ComputerBuilder& setCpu(const std::string& cpu) override {
        m_computer->cpu = cpu; return *this;
    }
    ComputerBuilder& setGpu(const std::string& gpu) override {
        m_computer->gpu = gpu; return *this;
    }
    Computer* build() override { return m_computer; }
};

// 使用
Computer* pc = GamePCBuilder()
    .setCpu("i9-13900K")
    .setGpu("RTX 4090")
    .build();