
//食物的抽象创建者
public abstract class FoodBuilder {
    // 套餐
    protected SetMealProduct sm = new SetMealProduct();
    // 创建汉堡
    public abstract void buildHamburg();
    // 创建薯条
    public abstract void buildChips();
    // 创建可乐
    public abstract void buildCola();
    // 创建鸡肉卷
    public abstract void buildChickenRolls();
    public SetMealProduct getResult() {
        return sm ;
    }
}     具体食品创建者://具体食品创建者:KFC
//这样未来还可以支持麦当劳
public class KFCFoodBuilder extends FoodBuilder {
    @Override
    public void buildHamburg() {
        sm.getFoodList().add( "汉堡");
    }
    @Override
    public void buildChips() {
        sm.getFoodList().add( "薯条");
    }
    @Override
    public void buildCola() {
        sm.getFoodList().add( "可乐");
    }
    @Override
    public void buildChickenRolls() {
        sm.getFoodList().add( "鸡肉卷" );
    }
}//套餐
public class SetMealProduct {
    // 套餐名称
    private String name;
    // 套餐中的食品集合
    private List<String> foodList = new ArrayList<String>();
    public List<String> getFoodList() {
        return foodList ;
    }
    public void setFoodList(List<String> foodList) {
        this.foodList = foodList;
    }
    public String getName() {
        return name ;
    }
    public void setName(String name) {
        this.name = name;
    }
}     负责生成套餐,组装顺序的类://套餐一(薯条+可乐+汉堡)
class FirstDirector {
    private FoodBuilder fb;
    public FirstDirector(FoodBuilder fb) {
        this.fb = fb;
    }
    public SetMealProduct construct() {
        fb.buildChips(); // 薯条
        fb.buildHamburg(); // 汉堡
        fb.buildCola(); // 可乐
        return fb .getResult();
    }
}
// 套餐二(鸡肉卷+薯条+可乐)
class SecondDirector {
    private FoodBuilder fb;
    public SecondDirector(FoodBuilder fb) {
        this.fb = fb;
    }
    public SetMealProduct construct() {
        fb.buildChickenRolls(); // 鸡肉卷
        fb.buildChips(); // 薯条
        fb.buildCola(); // 可乐
        return fb .getResult();
    }
}     调用者:        FirstDirector fDirector = new FirstDirector( new KFCFoodBuilder());
        SecondDirector sDirector = new SecondDirector( new KFCFoodBuilder());
        fDirector.construct();
        sDirector.construct();     这样的话,调用者不需要关心底层如何创建,如何组装的,直接获得就行了,其实这就是创建者模式的思想。原文地址:http://blog.csdn.net/xuepiaohan2006/article/details/38266005