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 toppings; };// Builder class PizzaBuilder { public:virtual void buildDough() = 0;virtual void buildSauce() = 0;virtual void buildToppings() = 0;virtual Pizza

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 对象。

标签列表