用C++实现建造模式
以下是一个使用C++实现建造模式的示例:
#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() {
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* getProduct() = 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* getProduct() override {
return product_;
}
private:
Product* product_ = new Product();
};
// 指挥者类
class Director {
public:
void setBuilder(Builder* builder) {
builder_ = builder;
}
Product* construct() {
builder_->buildPartA();
builder_->buildPartB();
builder_->buildPartC();
return builder_->getProduct();
}
private:
Builder* builder_;
};
int main() {
ConcreteBuilder builder;
Director director;
director.setBuilder(&builder);
Product* product = director.construct();
product->show();
delete product;
return 0;
}
在以上示例中,Product是要构建的产品类,Builder是抽象建造者类,定义了构建产品的抽象方法。ConcreteBuilder是具体建造者类,实现了抽象建造者类的方法,并返回构建好的产品。Director是指挥者类,负责调用具体建造者的方法来构建产品。
在main函数中,首先创建了一个具体建造者对象ConcreteBuilder和一个指挥者对象Director。然后通过调用指挥者的setBuilder方法将具体建造者对象传入指挥者。接下来,通过调用指挥者的construct方法来构建产品,并将构建好的产品赋给product指针。最后,调用产品的show方法展示产品的内容,并释放内存
原文地址: http://www.cveoy.top/t/topic/hAes 著作权归作者所有。请勿转载和采集!