一、原理讲解
1.1意图
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
1.2应用场景
- 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时;
- 当构造过程必须允许被构造的对象有不同的表示时;
1.3结构图(UML图)

1.4代码实现步骤
1.4.1产品类
a1 定义一个抽象产品类IProduct,定义两个虚接口函数getName()和show();
a2 定义一个具体产品类Product1,实现两个虚接口函数fun1()和show(),并且定义一个私有变量name,我们的目的是分步骤构建这个name。
1.4.2构建器类
a3 定义一个抽象构建器接口类IBuilder,定义两个接口函数buildPart1()、buildPart2()和一个产品返回接口getProduct()用于子类继承;(抽象类)
a4 定义一个实现具体构建器接口类ConcreteBuilder,重写接口函数buildPart1()、buildPart2()和产品返回接口getProduct();(具体构建器)(细节的表示分离开来【与构建步骤】)
a5 同时定义一个产品指针变量IProduct* product,在buildPart1和buildPart2函数里面用改变量分别构建该产品的名字,然后通过产品返回接口getProduct()返回该变量;
1.4.2导演类(或者称操作者类)
a6 定义一个导演类Director,里面函数construct用表示接口buildPart1()和buildPart2()按照一定逻辑构建具体的产品;
二、实现代码
2.1
本示例假设构建一个产品,该产品的名字构建步骤非常复杂,需要步骤1和步骤2才能完成。
2.2 具体代码
BuilderPattern.cpp
#include <iostream>
#include <string>
using namespace std;
#define DELETE(pointer) delete pointer; pointer=nullptr
class IProduct {
//抽象产品类
public:
virtual string& getName() = 0;
virtual void show() = 0;
};
class Product1

本文详细介绍了C++中的构建器模式,旨在分离复杂对象的构建与其表示,使得构建过程能创建多种表示。内容包括模式的意图、应用场景、UML结构图及代码实现步骤,展示了如何通过构建器、导演类以及产品类实现不同步骤的构建。最后,对构建器模式进行了总结,探讨了其与原型模式的异同。
最低0.47元/天 解锁文章
1900

被折叠的 条评论
为什么被折叠?



