用cpp写一个建造者模式
时间: 2023-12-29 09:32:26 浏览: 65
当然可以!下面是一个用C++编写的简单建造者模式示例:
```cpp
#include <iostream>
#include <string>
// 产品类
class Product {
public:
void setPartA(const std::string& partA) {
partA_ = partA;
}
void setPartB(const std::string& partB) {
partB_ = partB;
}
void setPartC(const std::string& partC) {
partC_ = partC;
}
void show() const {
std::cout << "Part A: " << partA_ << std::endl;
std::cout << "Part B: " << partB_ << std::endl;
std::cout << "Part C: " << partC_ << std::endl;
}
private:
std::string partA_;
std::string partB_;
std::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:
void buildPartA() override {
product_.setPartA("Part A");
}
void buildPartB() override {
product_.setPartB("Part B");
}
void buildPartC() override {
product_.setPartC("Part C");
}
Product getResult() override {
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)。建造者(Builder)定义了构建产品的抽象接口,具体的建造者(ConcreteBuilder)实现了这些接口来构建具体的产品。导演(Director)负责使用建造者来构建产品。
希望这个例子对你有帮助!如果有任何疑问,请随时提问。
阅读全文