建造者模式c++实例
时间: 2024-09-26 08:03:25 浏览: 53
C++设计模式之建造者模式(Builder)
建造者模式(Builder Pattern)是一种设计模式,用于将复杂产品的构建过程分解为一系列简单的步骤,使得每个步骤都可以独立地进行组合和测试。这个模式通常用于创建复杂的对象结构,尤其是当产品需要很多选项或配置的时候。
在 C++ 中,我们可以使用构造函数链或者工厂方法来实现建造者模式的一个简单例子:
```cpp
// 定义一个抽象的构建者接口
class Builder {
public:
virtual Product* build() = 0;
};
// 具体的产品
class ConcreteProduct {
public:
explicit ConcreteProduct(Builder& builder) : _builder(builder) {}
// 实现一些产品特有的功能
void setFeature1(int value) { feature1_ = value; }
void setFeature2(std::string value) { feature2_ = value; }
private:
int feature1_;
std::string feature2_;
Builder& _builder;
};
// 具体的构建者
class ConcreteBuilderA : public Builder {
public:
ConcreteBuilderA() : _product(new ConcreteProduct(*this)) {}
void configureFeature1(int value) {
_product->setFeature1(value);
}
Product* build() override {
return _product.release();
}
private:
std::unique_ptr<ConcreteProduct> _product;
};
class ConcreteBuilderB : public Builder {
public:
void configureFeature2(const std::string& value) {
_product->setFeature2(value);
}
Product* build() override {
return _product.release();
}
private:
std::unique_ptr<ConcreteProduct> _product;
};
int main() {
Builder* builder = new ConcreteBuilderA();
builder->configureFeature1(42);
builder = new ConcreteBuilderB(); // 改变构建者
builder->configureFeature2("example");
Product* product = builder->build();
delete builder;
return 0;
}
```
在这个例子中,`Builder`是建造者的抽象接口,`ConcreteProduct`是产品,而`ConcreteBuilderA`和`ConcreteBuilderB`是具体的建造者,它们分别负责配置产品的一部分特性。
阅读全文