净谦

导航

构造者模式

package create.builder;

import java.util.ArrayList;
import java.util.List;

/**
 * 建造者模式,麦当劳点餐
 *
 * 可能有很多产品,并且有可能是互相不关联的对象
 * @author zhangchy
 *
 */

abstract class Product{
 public abstract void show();
}

//汉堡
class Hambger extends Product{
 public void show(){
  System.out.println("this is a hambger");
 }
}

//蛋糕
class Cake extends Product{
 public void show(){
  System.out.println("this is a cake");
 }
}

//可口可乐
class CokeColer extends Product{
 public void show(){
  System.out.println(" this is a cokecoler");
 }
}

//抽象制作人的类
abstract class Builder{
 public abstract Product createHambeger();
 public abstract Product createCake();
 public abstract Product createCokeColer();
}

//制作的人
class BuilderMen extends Builder{
 //制作汉堡包
 public  Product createHambeger(){
  return new Hambger();
 }
 //制作蛋糕
 public  Product createCake(){
  return new Cake();
 }
 //制作可口可乐
 public  Product createCokeColer(){
  return new CokeColer();
 }
}

//组装套餐的人
class Drector{
 private Builder builder;
 public Drector(Builder builder){
  this.builder = builder;
 }
 List<Product> taocanArray = new ArrayList();
 
 //组合套餐
 public void createTaocan(){
  taocanArray.add(builder.createCake());
  taocanArray.add(builder.createHambeger());
 }
 
 public List getArrayInfo(){
  return taocanArray;
 }
}

public class BuilderPattern {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Builder builder = new BuilderMen();
  Drector drector = new Drector(builder);
  drector.createTaocan();
  List<Product> Arrayget = drector.getArrayInfo();
  for(Product p:Arrayget){
   p.show();
  }
 }

}

posted on 2012-03-19 10:25  康安V  阅读(191)  评论(0)    收藏  举报