构造者模式
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();
}
}
}
浙公网安备 33010602011771号