设计模式之c++建造者模式(示例代码)
创始人
2025-05-29 17:50:03
0

建造者模式(Builder Pattern)是一种创建型设计模式,用于将一个复杂对象的构建过程和表示分离,使得同样的构建过程可以创建不同的表示。

在 C++ 中实现建造者模式,通常需要定义一个抽象的建造者接口和具体的建造者类,以及一个具体的产品类和一个指挥者类。

以下是一个简单的 C++ 建造者模式示例代码:

#include 
#include // 抽象的建造者接口
class Builder {
public:virtual void buildPartA() = 0;virtual void buildPartB() = 0;virtual void buildPartC() = 0;
};// 具体的建造者类
class ConcreteBuilder : public Builder {
private:std::string m_partA;std::string m_partB;std::string m_partC;public:void buildPartA() override {m_partA = "Part A";}void buildPartB() override {m_partB = "Part B";}void buildPartC() override {m_partC = "Part C";}// 获取构建完成的产品std::string getProduct() {return m_partA + " " + m_partB + " " + m_partC;}
};// 具体的产品类
class Product {
private:std::string m_parts;public:void setParts(std::string parts) {m_parts = parts;}std::string getParts() {return m_parts;}
};// 指挥者类
class Director {
public:// 构建产品的方法,接受一个建造者对象作为参数void construct(Builder* builder) {builder->buildPartA();builder->buildPartB();builder->buildPartC();}
};int main() {ConcreteBuilder builder;Director director;// 构建产品director.construct(&builder);std::string product = builder.getProduct();std::cout << "Product: " << product << std::endl;// 将构建完成的产品传递给具体的产品对象Product finalProduct;finalProduct.setParts(product);std::cout << "Final product: " << finalProduct.getParts() << std::endl;return 0;
}

在上面的示例中,抽象的建造者接口 Builder 定义了构建产品的方法,具体的建造者类 ConcreteBuilder 实现了这些方法,并提供了一个 getProduct() 方法返回构建完成的产品。具体的产品类 Product 定义了产品的属性和方法,指挥者类 Director 负责构建产品的过程。

main() 函数中,我们首先创建一个 ConcreteBuilder 对象和一个 Director 对象,然后调用指挥者的 construct() 方法来构建产品。最后,我们将构建完成的产品传递给具体的产品对象 finalProduct 并输出其属性。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...