c++建造者模式(建造者模式创建对象)
简介
建造者模式是一种创建型设计模式,它允许我们在一步一步的流程中构建复杂的对象,而不必指定对象的具体类型。它提供了一个灵活的方式来创建和配置复杂的对象,而不需要每次都创建新类。
建造者模式的优点
代码解耦:
建造者模式将对象创建和配置过程解耦,使代码更易于维护和扩展。
灵活性:
它允许我们通过创建不同的建造者类来创建多种对象类型。
可扩展性:
我们可以轻松地添加新的建造者类来创建新类型的对象。
多级标题
建造者模式的结构
Product:
要创建的产品类型。
Builder:
负责创建和配置产品的接口。
ConcreteBuilder:
实现 Builder 接口的具体类,用于创建和配置产品的特定类型。
Director:
协调建造过程的类,负责调用 Builder 方法来创建产品。
内容详细说明
建造者模式的工作原理如下:1.
Director 创建一个 ConcreteBuilder 实例:
Director 负责指导建造过程,它创建一个 ConcreteBuilder 实例来构建特定类型的产品。 2.
Director 调用 Builder 方法配置产品:
Director 调用 Builder 接口的方法来配置产品,包括设置属性、添加组件等。 3.
ConcreteBuilder 构建产品:
ConcreteBuilder 根据 Director 的指示来构建和配置产品,并返回最终结果。 4.
Director 获取最终产品:
Director 从 ConcreteBuilder 获取构建完成的产品。
示例代码
```cpp
// Product
class Pizza {
public:string dough;string sauce;vector
getPizza() = 0; };// ConcreteBuilder (HawaiianPizzaBuilder) class HawaiianPizzaBuilder : public PizzaBuilder { public:Pizza
getPizza() override { return pizza; }void buildDough() override { pizza->dough = "Thin crust"; }void buildSauce() override { pizza->sauce = "Sweet chili"; }void buildToppings() override { pizza->toppings.push_back("Pineapple"); pizza->toppings.push_back("Ham"); } private:Pizza
pizza; };// Director class PizzaDirector { public:void makePizza(PizzaBuilder
builder) {builder->buildDough();builder->buildSauce();builder->buildToppings();} };int main() {PizzaDirector director;HawaiianPizzaBuilder builder;director.makePizza(&builder);Pizza
pizza = builder.getPizza();// ... 使用 pizza } ```在示例代码中,`Pizza` 是 Product,`PizzaBuilder` 是 Builder 接口,`HawaiianPizzaBuilder` 是 ConcreteBuilder,`PizzaDirector` 是 Director。`makePizza` 方法指导建造过程,根据 ConcreteBuilder 的指示创建和配置 Pizza 对象。