OK,理解了建造者模式的基本思想,下面就深入的理解一下
一、认识建造者模式
上面的例子如果你有点懵,没紧要下面好好地理一理。利用一张图来表示一下建造者模式
上面的流程梳理一下,一共有5个角色
(1)用户:也便是我们消费者,用户提要求,要建一个什么样的屋子
(2)Director(开拓商):他自己不会开拓,就像万达老板一样可能不会砌墙这些,但是他找包工头去做,他只须要去调用这些包工头就造屋子就好了。
(3)Builder(抽象的包工头):给出一个抽象接口,规定屋子由哪几部分组成,如何去建造。给下面的包工头一个建屋子的规范。
(4)ContreteBuilder(详细包工头):真正建屋子的人,但是每一个包工头可以建不同的屋子。
(5)Product(屋子):也便是我们的产品类。
再给出一张类图看一下他们几个在类上的关系
明白了吧。如果还不清楚,在往下看,代码去演示一下。
二、代码实现建造者模式
我们代码实现的时候,是从后往前走的,比如说是先有屋子然后建造者这些。
第一步:定义Product(屋子)
第二步:抽象建造者接口
第三步:详细建造者(这里有两个包工头A和B)
包工头B和A是一样的代码。只是名字不同,这里就给出一个
第四步:Director(开拓商指挥者)
第五步:用户
三、总结
(1)优点
将产品本身与产品创建过程进行解耦,将繁芜产品的创建步骤分解在不同的方法中,使得创建过程更加清晰增加新的详细建造者无需修正原有类库的代码,易于拓展,符合“开闭原则“。(2)缺陷
如果产品之间的差异性很大,则不适宜利用建造者模式,因此其利用范围受到一定的限定。如果产品的内部变革繁芜,可能会导致须要定义很多详细建造者类来实现这种变革,导致系统变得很弘大。OK,建造者模式就先讲到这里,如有问题还请批评示正。