建造者设计模式

2025年8月18日 | 阅读 10 分钟

构建器模式说,“使用逐步方法从简单对象构建复杂对象”

它主要用于不能一步创建对象的情况,例如复杂对象的反序列化。

构建器设计模式的优势

构建器模式的主要优点如下

  • 它提供了对象构建和表示之间的清晰分离。
  • 它提供了对构建过程的更好控制。
  • 它支持更改对象的内部表示。

构建器模式示例的 UML 图

Builder Design Pattern

构建器设计模式的示例

要创建构建器设计模式的简单示例,您需要遵循以下 6 个步骤。

  1. 创建 Packing 接口
  2. 创建 2 个抽象类 CD 和 Company
  3. 创建 Company 的 2 个实现类:Sony 和 Samsung
  4. 创建 CDType 类
  5. 创建 CDBuilder 类
  6. 创建 BuilderDemo 类

1) 创建 Packing 接口

文件:Packing.java

2) 创建 2 个抽象类 CD 和 Company

创建一个将实现 Packing 接口的抽象类 CD。

文件:CD.java
文件:Company.java

3) 创建 Company 的 2 个实现类:Sony 和 Samsung

文件:Sony.java
文件:Samsung.java

4) 创建 CDType 类

文件:CDType.java

5) 创建 CDBuilder 类

文件:CDBuilder.java

6) 创建 BuilderDemo 类

文件:BuilderDemo.java


上述示例的输出


构建器模式的另一个实际示例

构建器模式的 UML 图

我们考虑一个必胜客的业务案例,我们可以在那里获得不同种类的披萨和冷饮。

披萨可以是素食披萨或非素食披萨,有多种类型(如芝士披萨、洋葱披萨、玛莎拉披萨等),并且有 4 种尺寸,即小号、中号、大号、特大号。

冷饮可以有多种类型(如百事可乐、可口可乐、激浪、雪碧、芬达、玛萨、利姆卡、Thums-up 等),并且有 3 种尺寸:小号、中号、大号。

Builder Design Pattern uml

构建器模式的实际示例

让我们逐步看看构建器设计模式的实际示例。

步骤 1:创建一个表示披萨和冷饮的 Item 接口。

文件:Item.java

步骤 2:创建一个将实现 Item 接口的抽象类 Pizza。

文件:Pizza.java

步骤 3:创建一个将实现 Item 接口的抽象类 ColdDrink。

文件:ColdDrink.java

步骤 4:创建一个将扩展抽象类 Pizza 的抽象类 VegPizza。

文件:VegPizza.java

步骤 5:创建一个将扩展抽象类 Pizza 的抽象类 NonVegPizza。

文件:NonVegPizza.java

步骤 6:现在,创建将扩展抽象类 VegPizza 的具体子类 SmallCheezePizza、MediumCheezePizza、LargeCheezePizza、ExtraLargeCheezePizza。

文件:SmallCheezePizza.java
文件:MediumCheezePizza.java
文件:ExtraLargeCheezePizza.java

步骤 7:现在,同样创建将扩展抽象类 VegPizza 的具体子类 SmallOnionPizza、MediumOnionPizza、LargeOnionPizza、ExtraLargeOnionPizza。

文件:SmallOnionPizza.java
文件:MediumOnionPizza.java
文件:LargeOnionPizza.java
文件:ExtraLargeOnionPizza.java

步骤 8:现在,同样创建将扩展抽象类 VegPizza 的具体子类 SmallMasalaPizza、MediumMasalaPizza、LargeMasalaPizza、ExtraLargeMasalaPizza。

文件:SmallMasalaPizza.java
文件:MediumMasalaPizza.java
文件:LargeMasalaPizza.java
文件:ExtraLargeMasalaPizza.java

步骤 9:现在,创建将扩展抽象类 NonVegPizza 的具体子类 SmallNonVegPizza、MediumNonVegPizza、LargeNonVegPizza、ExtraLargeNonVegPizza。

文件:SmallNonVegPizza.java
文件:MediumNonVegPizza.java
文件:LargeNonVegPizza.java
文件:ExtraLargeNonVegPizza.java

步骤 10:现在,创建将扩展抽象类 ColdDrink 的两个抽象类 Pepsi 和 Coke。

文件:Pepsi.java
文件:Coke.java
文件:MediumPepsi.java
文件:LargePepsi.java

步骤 12:现在,创建将扩展抽象类 Coke 的具体子类 SmallCoke、MediumCoke、LargeCoke。

文件:SmallCoke.java
文件:MediumCoke.java
文件:LargeCoke.java

步骤 14:创建一个 OrderBuilder 类,该类将负责创建 OrderedItems 类的对象。

文件:OrdereBuilder.java

步骤 15:创建一个 BuilderDemo 类,它将使用 OrderBuilder 类。

文件:Prototype.java

输出

builderDesign Pattern output 1 builder Design Pattern output 1
下一个主题对象池模式