Version: Next

生成器模式 Builder

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

源发问题

构成系统的对象不仅需要创建,而且需要装配,这两个方面如果没有分开,则创建代码和装配代码存在强耦合。当希望用相同的创建过程生产不同的系统装配效果时,这种强耦合的时间方式显然不适用。

解决方案

将系统的创建过程和装配过程分开。如类图所示,Director中负责具体产品的创建过程,而具体产品的装配过程放入Builder中完成,最终只返回一个装配的结果。这样,同样的创建过程可以有不同的装配效果。

UML类图

image-20200324210836672

代码

优缺点

  • 优点
    • 由于创建过程和装配过程分开,因此当有新类型对象需要装配时,新的装配方式将封装在抽象类Builder扩展出的具体子类中,Director可以一九通过抽象类Builder的引用向具体Builder对象发送同样的消息。需要说明的时:各个装配产品之间没有任何关系,因而各个产品都可以被新产品所替换,当替换发生时,DirectorClient的代码不用做任何修改
  • 缺点
    • Director中创建各种产品的“工艺”过程不能改变,也就是说,如果工艺过程改变,则生成器模式不再适用