现在的位置: 首页 > 综合 > 正文

3.Builder(建造者模式)

2013年06月19日 ⁄ 综合 ⁄ 共 861字 ⁄ 字号 评论关闭

Builder(建造者模式)

     将一个复杂对象的构造方法从其表现中分离出来,以便同样的构造方法可以建立不同的表现。复杂的对象,是指该复杂对象作为构造的产品通常是由不同部分组成的,而这些部分的不同作用和表现,则构成了该对象的不同表现。

     由于需要创建的对象具有复杂的内部结构,该对象的创建与其个组成部分或相关部分相互依赖,即要生成的产品的属性(部件)相互依赖。所以构建复杂对象不是一蹴而就的,需要按照一定的步骤、算法完成建造过程。如果产品对象的一个属性在另一个属性确定(赋值)之后才有效,或者产品对象的一个部件对象在另一个部件对象确定(创建)之后才有效,此时使用Builder(建造者模式)就可以将建立复杂对象的算法与创建对象及如何进行内部装配分隔开来。由于抽离算法(建造产品的步骤),是稳定的,因此这种模式允许建造的产品有不同的表现。(以上的部分比较绕口,但是请仔细阅读。

 

适用情况:

1.建立复杂对象的算法必须与创建对象及如何进行内部装配分离。

2.构建方法必须允许其构建的对象有不同的表现。

 

结构:

1.建造者(CAbstractBuilder):定义一个抽象接口以创建产品对想的各个部分。他提供的接口不依赖于所构建产品的不同表现形态,也不依赖于程序的业务逻辑。他按照一定的算法步骤来创建产品的各个部分,例如:BuilderPart1,BuilderPart2,然后进行内部装配(如果需要的话)并返回最终产品,例如:GetProduct.

2.具体建造者(CConcreteBuilder):实现建造者接口以创建及装配产品的各个部分。分步骤完成建造工作并在完工后提供一个接口来返回该产品的实例。

3.指挥者(CDirector):使用建造者接口来建造对象。(客户端创建指挥者对象和具体建造者对象,并由指挥者对象指挥具体建造者对象,开始建造产品。)

4.产品(CProduct):由建造者负责建造的复杂对象。该产品可能有多种复杂的表现形式,但都可以使用建造者统一的建造步骤来建造。

 

uml图:

暂时略。

模板代码:

暂时略。

抱歉!评论已关闭.