场景分析(如图)
定义及本质定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
本质:分离整体构建算法和部件构造。重在解决构造复杂对象的问题。
结构示意图:
Director:指导者,负责把构建过程独立出来,并指导装配过程,实现整体构建算法,但不负责具体的实现,因而是相对不变的;而是将创建和组合具体部件通过委托交给Builder完成。
Builder:生成器接口,定义各个部件的操作。
ConcreteBuilder:生成器,负责具体的实现,实现各个部件的创建、组装,最终提供可获取组装完成后的产品对象的方法。
Builder模式包括两部分:一部分是部件构造和产品装配,另一部分是整体构建算法。主要强调是整体构建的算法,而灵活扩展和切换部件的具体构造和产品装配的方式。
UML类图
调用时序图
优缺点
(1)松散耦合、复用性
生成器模式使用统一的构建算法实现产品构建和产品表现上分离,将产品构建过程独立出来,使它和具体产品的表现松耦合;Director是统一的、固定不变的,这使得构建算法可以复用。
(2)容易改变产品内部表示
具体生成器实现部分是可变的,如需改变产品的内部表示,只需要切换Builder的具体实现即可。
(3)生成器模式的重心在于分离整体构建算法(Director)和部件构造(ConcreteBuilder),分步骤构建对象可以说是整体构建算法的一个简单表现,或者说是一个附带物。