建造者模式

来源:互联网 发布:男加厚棉服淘宝 编辑:程序博客网 时间:2024/05/22 03:09

五、Bulide(建造者模式)

是将一个复杂的对象的构建与它的表示分离(同构建不同表示),使得同样的构建过程可以创建不同的表示。

5.1建造者模式通常包括下面几个角色:

Builder:一个抽象接口,用来规范产品对象的各个组成成分的建造。

② ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建,在建造过程完成后,提供产品的实例。

③ Director:指导者,调用具体建造者来创建复杂对象的各个部分,不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建。

④ Product:要创建的复杂对象。

与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者最后得到产品。即建造模式可以强制实行一种分步骤进行的建造过程。

5.2举例:

//Product和产品的部分Part接口

publicinterface product { }

publicinterface part{ }

Builder:规范产品对象的各个组成部分的建造

publicinterface Builder {

voidbuildPartOne();

voidbuildPartTwo();

ProductgetProduct();

}

ConcreteBuilder:实现Buider接口,针对不同的商业逻辑,具体化复杂对象的各个部分的常见,在创建完成后,提供产品的实例。

//具体建造工具

public classConcreteBuilder implements Builder {

Part partOne,partTwo;

public voidbuildPartOne() {

//具体构建代码

};

public voidbuildPartTwo() {

//具体构建代码

};

public ProductgetProduct() {

//返回最后组装的产品

};

}

Director:

publicclass Director {

privateBuilder builder;

publicDirector( Builder builder ) {

this.builder= builder;

}

publicvoid construct() {

builder.buildPartOne();

builder.buildPartTwo();

}

}

建造:

ConcreteBuilderbuilder = new ConcreteBuilder();

//获取建造的指导者。

Directordirector = new Director(builder);

//开始各部分建造

director.construct();

//获得产品

Productproduct = builder. getProduct ();

优点:

l  客户端不必知道产品内部组成的细节。

l  具体的建造者类之间是相互独立的,对系统的扩展非常有利。

l  由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。

使用场合:

l  创建一些复杂的对象时,这些对象的内部组成构件间的建造顺序是稳定的,但是对象的内部组成构件面临着复杂的变化。

l  要创建的复杂对象的算法,独立于该对象的组成部分,也独立于组成部分的装配方法时。

android中的Dialog就使用了Builder Pattern,下面来看看AlertDialog的部分源码。


0 0