本文已参加【新人创作礼】活动,一起开启掘金创作之路。
概念
建造者模式(Builder Pattern)也叫做生成器模式。将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
角色
Builder:抽象建造者
ConcreteBuilder:具体建造者
Director:指挥者
Product:产品角色
类图
| 建造者模式类图[^1] |
个人理解:对应一个产品可以可以分成多个步骤创建,各个步骤由建造者Builder来定义,具体由指挥者执行。以汉堡包生产为例: 汉堡是产品,制作汉堡可以拆分成多个步骤,建造者定义这些步骤,例如加面包片、加鸡排、加生菜等。不同套餐不同的组成部分,执行者就对应不同套餐的值作。
实例代码
应用
在很多游戏软件中,地图包括天空、地面、背景等组成部分,人物角色包括人体、服装、装备等组成部分,可以使用建造者模式对其进行设计,通过不同的具体建造者创建不同类型的地图或人物。
优缺点
优点:增加新的具体建造者无须修改原有类库的代码,指挥者类针对抽象建造者类编程,系统扩展方便,符合开闭原则
缺点:产品之间的差异性很大,则不适合使用建造者模式,使用范围受限;如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大
参考资料
[1] 刘伟. 设计模式的艺术[M]. 清华大学出版社, 2020.
[2] 青岛东合信息技术有限公司. 设计模式:Java 版[M]. 电子工业出版社, 2012.
[3] 图说设计模式