Version: Next
生成器模式 Builder
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
源发问题
构成系统的对象不仅需要创建,而且需要装配,这两个方面如果没有分开,则创建代码和装配代码存在强耦合。当希望用相同的创建过程生产不同的系统装配效果时,这种强耦合的时间方式显然不适用。
解决方案
将系统的创建过程和装配过程分开。如类图所示,Director
中负责具体产品的创建过程,而具体产品的装配过程放入Builder
中完成,最终只返回一个装配的结果。这样,同样的创建过程可以有不同的装配效果。
UML类图
代码
优缺点
- 优点
- 由于创建过程和装配过程分开,因此当有新类型对象需要装配时,新的装配方式将封装在抽象类
Builder
扩展出的具体子类中,Director
可以一九通过抽象类Builder
的引用向具体Builder
对象发送同样的消息。需要说明的时:各个装配产品之间没有任何关系,因而各个产品都可以被新产品所替换,当替换发生时,Director
和Client
的代码不用做任何修改
- 由于创建过程和装配过程分开,因此当有新类型对象需要装配时,新的装配方式将封装在抽象类
- 缺点
Director
中创建各种产品的“工艺”过程不能改变,也就是说,如果工艺过程改变,则生成器模式不再适用