读书人

设计形式记录(2.3)

发布时间: 2012-09-08 10:48:07 作者: rapoo

设计模式记录(2.3)
第十九章 建造模式
建造模式似乎对象的创建模式。建造模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
产品的内部表象
一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是对象,它们通常又叫做产品的内部表象。不同的产品可以由不同的内部表象,也就是不同的零件。使用建造模式可以使客户端不需要知道所生成的产品对象有哪些零件,每个产品的对应零件彼此有何不同,是怎么构造出来的,以及怎么样组成产品。建造模式的简略类图如下:

对象性质的建造
在一些情况下,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用。比如,一个电子邮件有发件人地址、收件人地址等等。这些条件如果没有的时候,邮件是不可能发出去的。
在一些情况下,一个对象的一些性质必须按照某个顺序赋值才有意义。在某个性质没有赋值之前,另一个性质则无法赋值。这些情况使得性质本身的建造涉及到复杂的商业逻辑。
建造模式非常适用于此种情况。建造模式利用一个导演者对象和具体建造者对象一个一个地建造出所有的零件,从而建造出完整的产品对象。建造者模式将产品的结构和产品的零件建造过程对客户端隐藏起来,把对建造过程进行指挥的责任和具体建造者零件的责任分割开来,达到责任划分和封装的目的。
建造模式的结构


在这个示意性的系统里,最终产品Product只有两个零件,即part1,part2。相应的建造方法也有两个:buildPart1和buildPart2。同时可以看出模式涉及了4个角色。
源代码如下:
首先Director类有一个建造方法(construct()方法),负责调用具体建造者对象的零件建造方法,即buildPart1和buildPart2等方法。

public void construct()    {        builder = new ConcreteBuilder();        builder.buildPart1();        builder.buildPart2();        builder.retrieveResult();        //continue with other code    }

读书人网 >软件开发

热点推荐