设计模式之建造者模式
建造者模式是创建型设计模式。将复杂对象的构造与其表示分开,以便相同的构造过程可以创建不同的表示。
在玩游戏创建角色的时候,系统默认一个初始人物,开始创建时,需要输入角色的名称,选择人物的性别。之后可以自定义武器,技能等等。拥有的人物可能各不相同,但是生成人物的流程是相同的。这个流程就是”建造过程“,这种构建建造过程的模式,就是建造者模式。
使用建造者模式:
可以对用户屏蔽构建的具体细节
用户只需给出复杂对象的内容和类型可以创建出对象
依据构造流程构建出复杂对象
解决了什么问题
建造者模式避免了在构建相同的对象,对象内具有不同的属性时,造成的构造器污染(constructor pollution)。方便的创建一系列不同的相同类型的对象。解决了可伸缩性的构造器反设计模式 (telescoping constructor anti-pattern
应用场景
- 对象足够复杂,创建这个对象的方法应与创建这个对象的组件和组装方式分开.
- 当构造对象时要求对这个对象具有不同的行为.
建造者模式结构
- 抽象Builder接口,定义构造流程结构(非必须)
- 实现Builder实现类,实现复杂对象构造结构
- Product 具体复杂实体类,也就是需要构建的结构
- Director 指挥者,调用Builer进行构建的指挥者(非必须)
上图为建造者模式类图:其中CharacterBuilder 和 Characters 中的属性相同,CharacterBuilder 存在的目的就是多种构造不同行为的Characters .
具体可以看下面代码实例
代码
角色实体
1 | public class Characters { |
角色构建器
1 | public class CharacterBuilder { |
客户端类:
1 | public class App { |
输出结果:
1 | Connected to the target VM, address: '127.0.0.1:57347', transport: 'socket' |