您的位置:首页 > 编程语言 > Java开发

java设计模式之建造者模式

2012-12-26 14:15 495 查看
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模式解决“系列对象”的需求变化。

它们相同的地方都是:抽象体内的对象或过程是稳定不变的,至于在项目中使用哪一个,这就要具体分析了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Builder JAVA 设计模式