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