设计模式 - 建造者模式

108 阅读2分钟

本文已参加【新人创作礼】活动,一起开启掘金创作之路。

概念

建造者模式(Builder Pattern)也叫做生成器模式。将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

角色

Builder:抽象建造者

ConcreteBuilder:具体建造者

Director:指挥者

Product:产品角色

类图

image.png
建造者模式类图[^1]

个人理解:对应一个产品可以可以分成多个步骤创建,各个步骤由建造者Builder来定义,具体由指挥者执行。以汉堡包生产为例: 汉堡是产品,制作汉堡可以拆分成多个步骤,建造者定义这些步骤,例如加面包片、加鸡排、加生菜等。不同套餐不同的组成部分,执行者就对应不同套餐的值作。

实例代码

image.png image.png image.png image.png

应用

在很多游戏软件中,地图包括天空、地面、背景等组成部分,人物角色包括人体、服装、装备等组成部分,可以使用建造者模式对其进行设计,通过不同的具体建造者创建不同类型的地图或人物。

优缺点

优点:增加新的具体建造者无须修改原有类库的代码,指挥者类针对抽象建造者类编程,系统扩展方便,符合开闭原则

缺点:产品之间的差异性很大,则不适合使用建造者模式,使用范围受限;如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大

参考资料

[1] 刘伟. 设计模式的艺术[M]. 清华大学出版社, 2020.

[2] 青岛东合信息技术有限公司. 设计模式:Java 版[M]. 电子工业出版社, 2012.

[3] 图说设计模式