什么是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模式,将部件的生产和组装分离出来,给用户只提供生产部件和组装部件的方法,具体的如何生产,如何组装那就的事情了。