标签:
(1)先创建一个建造者接口IMealBuilder来创建套餐
public interface IMealBuilder { public void BuildBurger(); public void BuildChips(); public void BuildDrink(); Meal GetMeal(); }
(2)用Meal类存放建造者需要建造的食物。
public class Meal { private List<IFood> foodList=new ArrayList<IFood>(); public void addFood( IFood food ) { foodList.add(food); } public void Show() { for (int i=0; i<foodList.size(); i++) { foodList.get(i).Make(); } } }
(3)分别创建肯德基、麦当劳两家店的建造者KFCBuilder、McDonaldBuilder都继承同样的建造过程IMealBuilder。
public class KFCBuilder implements IMealBuilder//KFC { protected Meal meal=new Meal(); public void BuildBurger() { IFood food = new KFCBurger(); meal.addFood(food); } public void BuildChips() { IFood food = new KFCChips(); meal.addFood(food); } public void BuildDrink() { IFood food = new KFCDrink(); meal.addFood(food); } public Meal GetMeal() { return meal; } } public class McDonaldBuilder implements IMealBuilder//McDonald { protected Meal meal=new Meal(); public void BuildBurger() { IFood food = new McDonaldBurger(); meal.addFood(food); } public void BuildChips() { IFood food = new McDonaldChips(); meal.addFood(food); } public void BuildDrink() { IFood food = new McDonaldDrink(); meal.addFood(food); } public Meal GetMeal() { return meal; } }
(4)创建一个指挥者MealDirector负责控制产品创建。
public class MealDirector { private IMealBuilder _builder; public MealDirector( IMealBuilder builder ) { _builder = builder; } public Meal CreateMeal() { _builder.BuildBurger(); _builder.BuildChips(); _builder.BuildDrink(); return _builder.GetMeal(); } }
(5)创建一个食物的接口IFood,具有制作食物的方法Make(),分别编写肯德基、麦当劳各种食品的制作方法。
public interface IFood { public abstract void Make(); } //KFC public class KFCBurger implements IFood { public void Make() { System.out.println("KFC汉堡做好了!"); } } public class KFCChips implements IFood { public void Make() { System.out.println("KFC薯条做好了!"); } } public class KFCDrink implements IFood { public void Make() { System.out.println("KFC饮料做好了!"); } } //McDonald public class McDonaldBurger implements IFood { public void Make() { System.out.println("McDonald汉堡做好了!"); } } public class McDonaldChips implements IFood { public void Make() { System.out.println("McDonald薯条做好了!"); } } public class McDonaldDrink implements IFood { public void Make() { System.out.println("McDonald饮料做好了!"); } }
(7)主函数Main分别创建肯德基和麦当劳的建造者和指挥者,来制作各自的套餐。
public class Main { public static void main(String[] args) { IMealBuilder builder1 = new KFCBuilder(); MealDirector director1 = new MealDirector(builder1); director1.CreateMeal().Show();; IMealBuilder builder2 = new McDonaldBuilder(); MealDirector director2 = new MealDirector(builder2); director2.CreateMeal().Show(); } }
输出结果:
标签:
原文地址:http://www.cnblogs.com/gzy1031/p/5090404.html