设计模式--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();

  }

}

 

最后写一个类来实现 制造这汽车各个部件的具体的方法(用不同的实现来 完成那几个创建部件方法,可以相像成不同的汽车厂商各按自己的标准和方式来制造具体自己特色的部件)

 

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();
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值