java设计模式之建造者模式

java设计模式之建造者模式

 

 1.builder: 创建一个product,为每个部件安排一个访问接口:

package com.buildertype.test;

public interface Builder{

public void fangYou();
public void fangYan();
public void fangZu();
Cai cook_cai();

}

2.concretebuilder: 实现builder接口,以装配和构造product的各个部件,提供一个检索产品的接口:


package com.buildertype.test;

public class ConcreteBuilder implements Builder {

 Cai cai;       //此处必须有这个Cai对象,因为部件的设定都要保存在它里面呢。

 public ConcreteBuilder() {

  cai = new Cai();

 }

 @Override
 public void fangYou() {

  cai.setYou("fang you jin qu......");

 }

 @Override
 public void fangYan() {
  // TODO Auto-generated method stub

  cai.setYan("fang yan jin qu......");

 }

 @Override
 public void fangZu() {
  // TODO Auto-generated method stub

  cai.setZu("fang zu jin qu ......");

 }

 @Override
 public Cai cook_cai() {
  // TODO Auto-generated method stub

  return cai;

 }

 

}

3.构造一个使用builder接口的对象,其中有一方法用来生成product:

package com.buildertype.test;

public class Director {

 public Cai buildCai(Builder b) {

  b.fangYou();
  b.fangYan();
  b.fangZu();
  return b.cook_cai();

 }

}

4.表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程:

package com.buildertype.test;

public class Cai {


 private String you;
 private String yan;
 private String zu;

 public String getYou() {

  return you;

 }

 public void setYou(String you) {

  this.you = you;

 }

 public String getYan() {

  return yan;

 }

 public void setYan(String yan) {

  this.yan = yan;

 }

 public String getZu() {

  return zu;

 }

 public void setZu(String zu) {

 this.zu = zu;

}

 

}

5.TEST program:

package com.buildertype.test;

public class Test {

 public static void main(String[] args) {

  Director dr = new Director();

  Cai cai = dr.buildCai(new ConcreteBuilder());
  System.out.println(cai.getYou());
  System.out.println(cai.getYan());
  System.out.println(cai.getZu());

 }

}

6.the result of the program:

fang you jin qu......
fang yan jin qu......
fang zu jin qu ......

7.总结:

1)2.中的Cai对象一定要有,因为对部件的设定,要反映到一个product当中去。然后把这个装配好的货物传给需要用到它的地方。

2)3.中的Director类是关键,调用它的buildCai()方法,其过程就是在构建一个货物,然后把构建好的货物返回,做为后面的用处。

 

 

Builder模式主要解决"复杂对象各个部分"的频繁需求变动。
Abstract Factory模式解决“系列对象”的需求变化。
它们相同的地方都是:抽象体内的对象或过程是稳定不变的,至于在项目中使用哪一个,这就要具体分析了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值