用C++举例说明一下常用的建造者模式
时间: 2024-04-18 17:30:37 浏览: 78
c++ 建造者模式实例
5星 · 资源好评率100%
好的,下面是一个用C++实现的常用的建造者模式示例:
```cpp
#include <iostream>
#include <string>
using namespace std;
// 产品类
class Product {
public:
void setPartA(const string& partA) {
this->partA = partA;
}
void setPartB(const string& partB) {
this->partB = partB;
}
void setPartC(const string& partC) {
this->partC = partC;
}
void show() {
cout << "Part A: " << partA << endl;
cout << "Part B: " << partB << endl;
cout << "Part C: " << partC << endl;
}
private:
string partA;
string partB;
string partC;
};
// 抽象建造者类
class Builder {
public:
virtual void buildPartA() = 0;
virtual void buildPartB() = 0;
virtual void buildPartC() = 0;
virtual Product* getResult() = 0;
};
// 具体建造者类
class ConcreteBuilder : public Builder {
public:
ConcreteBuilder() {
product = new Product();
}
void buildPartA() {
product->setPartA("Part A");
}
void buildPartB() {
product->setPartB("Part B");
}
void buildPartC() {
product->setPartC("Part C");
}
Product* getResult() {
return product;
}
private:
Product* product;
};
// 指挥者类
class Director {
public:
void construct(Builder* builder) {
builder->buildPartA();
builder->buildPartB();
builder->buildPartC();
}
};
int main() {
Director director;
ConcreteBuilder builder;
director.construct(&builder);
Product* product = builder.getResult();
product->show();
return 0;
}
```
在上述示例中,我们首先定义了一个产品类 `Product`,它具有三个部分:partA、partB和partC。然后定义了一个抽象建造者类 `Builder`,其中包含了构建产品的抽象方法。接着创建具体建造者类 `ConcreteBuilder`,实现了抽象建造者类的方法,具体构建了产品的各个部分。最后,我们定义了一个指挥者类 `Director`,通过指挥者来控制具体建造者的构建过程。
在主函数中,我们创建了一个指挥者对象 `director`,以及具体建造者对象 `builder`。然后通过指挥者对象调用建造者的方法来构建产品。最后通过建造者获取最终构建好的产品,并调用其展示方法进行展示。
这样,通过建造者模式,我们可以将产品的构建过程与其表示分离,使得代码更加清晰和易于维护。
阅读全文