一、概念
1.1、定义
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式将一个复杂类的创建过程,划分为多个「独立步骤」子过程,并且根据需要按照调整「独立步骤」的顺序,从而生成复杂类的对象实例。
- Director,指挥者:控制构建的算法 和 产品的生成过程。
- Builder,抽象建造者:创建过程划分为多个「独立步骤」的封装。
- ConcreteBuilder,具体建造者:实现细节构建,实现Builder的各个创建步骤方法。
1.2、解决的问题
在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。
二、模式的应用和优缺点
2.1、应用场景
- 应用场景:
1、去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的"套餐"。
2、在很多游戏软件中,地图包括天空、地面、背景等组成部分,人物角色包括人体、服装、装备等组成部分,可以使用建造者模式对其进行设计,通过不同的具体建造者创建不同类型的地图或人物。
2.2、优缺点
优点:
1、复杂对象构建过程进行解耦,扩展变的简单容易,层次更加清晰,降低系统耦合度
2、构建过程的解耦,对于高风险的对象更加容易控制细节风险。缺点:
1、产品必须有共同点,范围有限制。
2、如内部变化复杂,会有很多的建造类。