1、引例:
汽车,是一个很复杂的对象,它有很多的部件,车轮、发动机、座椅、车门、油箱等等;它的组装过程也很复杂(需要专业人士按步骤进行装配),建造者模式就是为了将部件和组装过程分开的。同样的,我们使用的计算机也一样,有很多的部件,组装过程也很复杂(当然,对于我们这样的专业人士可能感觉不复杂);本文例子:建房子,有打地基,建造房子,装修;设计师(Director)知道建造过程,总承包商知道需要建造的模块(Builder),并且有几个模块承包商(ConcreteBuilder),最后总承包商将产品房子提交给Director
2、介绍
(1)定义
将一个复杂对象的构建与他的表现分离,使得同样的构建过程可以创建不同的表现
(2)作用
建造者模式负责将复杂对象的构建过程和他的部件解耦,即过程和部件解耦
3.优点:
不需要知道细节
模块化处理
很好的组合特性
建造者模式最大的好处就是使得构建过程和表现分离,因此若需要改变一个产品的表现,只需要重新定义一个具体的建造者就可以了(拿车来打比方,我们将车的组装过程独立出来,用这个组装过程,我们即可以组装宝马车,也可以组装奔驰车,或者其他的车型,我们只需要重新定义一个具体的建造者(用于产品表现的类)就可以了)。
4.原理
从结构图可以看到,生成器模式有两个重要的角色:Director(指导者)和Builder(建造者)。Director知道Builder应该建造什么(建造的过程),Builder知道如何建造(表现)。在Director类中定义了一个construct方法,指导具体的建造者ConcreteBuilder的对象去buildPart。Builder是一个抽象接口(协议),该协议中包含建造各个部分的方法(buildPart),用来构建实际的产品Product,另外还有一个getResult方法,用来向客户端返回构建完成的Product。
建造者模式Demo:https://github.com/onebutterflyW/DesignModel-BridgePattern