Builder 建造者模式

Introduction to the Builder Pattern and its Implementation in C++. 建造者模式的介绍及其C++实现。


#建造者模式

#情形

一个复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。
比如娃娃工厂要造娃娃,每个娃娃有头有身子有手有腿。根据身子的胖瘦、头发的颜色还能给娃娃分成不同的种类

#结构

抽象建造者类builder:定义接口。对于娃娃这个产品,就有createHead(),createBody(),createHand().creatLeg()这四个接口。 具体建造者类FatBuilder、BrownBuilder:给出抽象类接口的具体实现。对于一个fat娃娃就有一个FatBuilder,对于棕色头发的美女就有一个BrownBuilder。 指挥者类Director:调用具体建造者对娃娃进行建造,传入一个具体的建造者,然后使用这个建造者进行建造,一般的指挥者是固定的成分,用户也可以自己决定要不要某些部分。 产品类Doll:最终产品,成员变量为各个组成部分。

#代码实现

#枚举类

枚举出产品各个部分都有哪些种类:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
enum BODY_TYPE {
    Fat,    // 肥胖身材
    Mid,    // 中等身材
    Thin    // 瘦小身材
};

enum HEAD_TYPE {
    Blck ,  // 黑色
    Red,    // 红色
    Brown   // 棕色
};

#产品类

定义出产品的组成部分。剩下的产品的行为接口可以自己进行个性化。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
// 产品类,定义了产品的组成部分,以及输出产品自己的信息
class Doll {
public:
    void show() {
        cout << head << endl;
        cout << body << endl;
        cout << hand << endl;
        cout << leg << endl;
    }
private:
    string head;
    string body;
    string hand;
    string leg;
};

#抽象建造者类

updatedupdated2025-03-032025-03-03