设计模式——Builder模式

http://my.oschina.net/jixin/blog/413277
什么是Builder模式: 如果按照网上的定义,理解起来相对不是简单易懂,我们可以打个比方,当需要构建一个复杂的对象时,比如说要生成一辆汽车,那么我们就需要先生成出构成这辆汽车的各个部件如车轮,发动机,方向盘,后视镜等,然后再将这些部件组装起来,最终组装成一辆完整的车。Builder模式的精髓就是将部件的生产和最终的组装分离出来。这样代码的模块化更强,更易于维护。

Builder模式举例:

1 定义一个Builder(建造)接口,声明“生产各个部件的方法以及组装各个部件的方法”;

public interface Builder

{

public void builderPartA(){}//生产a部件

public void builderPartB(){}//生产b部件

public void builderPartC(){}//生产c部件

public Product  getResult(){}//组装各个部件

}


2定义一个类,实现该接口,添加具体的生产各个部件的方法及组装各个部件的方法

public class CreateBuilder implements Builder

{


public void builderPartA(){.....................}//生产a部件

public void builderPartB(){......................}//生产b部件

public void builderPartC(){.......................}//生产c部件

public Product  getResult(){...................}//组装各个部件

}


3定义一个类Derictor:专门供用户发送生产组件命令和获取最终组装的产品

//在这个类中要使用CreateBuilder 方法,需要在Derictor中声明CreateBuilder 对象

public class Derictor

{

private CreateBuilder builder;

public Derictor( CreateBuilder builder)

{

this.builder=builder;

}

//生产各个部件

public void constructParts()

{

builder.builderPartA();

builder.builderPartB();

builder.builderPartC();

}

//组装最终产品

public Product  constructResult()

{

builder. getResult();

}

}


4调用:

CreateBuilder mBuilder=new CreateBuilder();

Derictor mDerictor=new Derictor(mBuilder);

mDerictor.constructParts();

Product mProduct=mDerictor.constructResult();

//最终构建复杂对象mProduct


    如果我们构建的对象较为复杂,那么我们就考虑使用Builder模式,将部件的生产和组装分离出来,给用户只提供生产部件和组装部件的方法,具体的如何生产,如何组装那就的事情了。

猜你喜欢

转载自panyongzheng.iteye.com/blog/2210248