1.1 基本概念
建造者模式(Builder): 将一个复杂对象的构建与它的表示分离,使得同样的构建过程就可以创建不同的表示。
建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。
什么是复杂对象:建造者模式中,复杂对象是指那些包含多个成员属性的对象,这些成员属性称为部件或零件,比如电子邮件包含发件人、收件人、主题、内容、附件等部件。
1.2 定义方式
(1)抽象建造者(Builder)
抽象建造者为创建一个产品Product对象的各个部件指定抽象接口,该接口一般声明两种方法,一类方法用于创建复杂对象的各个部件,另一类方法用于返回复杂对象。
(2)具体建造者(ConcreteBuilder)
具体建造者实现了抽象建造者接口,实现各个部件的构造和装配方法,定义并明确它所创建的复杂对象,也可以提供一个方法返回创建好的复杂产品对象。
(3)产品角色(Product)
产品角色是被构建的复杂对象,包含多个组成部件,具体建造者创建该产品的内部表示并定义它的装配过程。
(4)指挥者(Director)
指挥者负责安排复杂对象的建造次序,指挥者与抽象建造者之间存在关联关系,可调用建造者对象的部件与装配方法,完成发展对象的建造。客户端一般只需要与指挥者交互。
1.3 优缺点
优点:
(1)将产品本身与产品的创建过程解耦,使相同的创建过程可以创建不同的产品对象;
(2)增加新的具体建造者无效修改原有类库的代码,指挥者类针对抽象建造者类编程,系统扩展方便。
缺点:
(1)建造者模式所创建的产品一般具