设计模式之Builder

设计模式总共有23种模式这仅仅是为了一个目的:解耦+解耦+解耦...(高内聚低耦合满足开闭原则

介绍:

Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象。

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

 

模式结构:

首先我们看一下Builder的代码:

public interface Builder {

  //创建部件A  比如创建汽车车轮
  void buildPartA(); 
  //创建部件B 比如创建汽车方向盘
  void buildPartB(); 
  //创建部件C 比如创建汽车发动机
  void buildPartC(); 

  //返回最后组装成品结果 (返回最后装配好的汽车)
  //成品的组装过程不在这里进行,而是转移到下面的Director类中进行.
  //从而实现了解耦过程和部件
  Product getResult();

}

接下来我们看一下指挥长Director。

public class Director {

  private Builder builder;

  public Director( Builder builder ) { 
    this.builder = builder; 
  } 
  // 将部件partA partB partC最后组成复杂对象
  //这里是将车轮 方向盘和发动机组装成汽车的过程
  public void construct() { 
    builder.buildPartA();
    builder.buildPartB();
    builder.buildPartC();

  }

}

然后就是具体Builder

public class ConcreteBuilder implements Builder {

  Part partA, partB, partC; 
  public void buildPartA() {
    //这里是具体如何构建partA的代码

  }; 
  public void buildPartB() { 
    //这里是具体如何构建partB的代码
  }; 
   public void buildPartC() { 
    //这里是具体如何构建partB的代码
  }; 
   public Product getResult() { 
    //返回最后组装成品结果
  }; 
}

这样一来我们在客户端代码中只需:

ConcreteBuilder builder = new ConcreteBuilder();
Director director = new Director(builder); 
director.construct(); 
Product product = builder.getResult();

Builder相关比较简单,如果有复杂的对象要创建时可以适用次模式,你也可以通过Director控制复杂对象的组成元素,例如邮件(包含附件,主题,内容...)

 

posted on 2016-08-05 08:10  金洪光  阅读(172)  评论(0编辑  收藏  举报

导航