MealBuilder
interface MealBuilder { void BuildBurger(); void BuildChicken(); void BuildDrink(); Meal GetMeal(); }
KFCBuilder
public class KFCBuilder:MealBuilder { protected Meal meal=new Meal(); public void BuildBurger() { Food food = new KFC_Burger(); meal.AddFood(food); } public void BuildChicken() { Food food = new KFC_Chicken(); meal.AddFood(food); } public void BuildDrink() { Food food = new KFC_Drink(); meal.AddFood(food); } public Meal GetMeal() { return meal; } }
McDonaldsBuilder
public class McDonaldsBuilder:MealBuilder { protected Meal meal=new Meal(); public void BuildBurger() { Food food = new McDonalds_Burger(); meal.AddFood(food); } public void BuildChicken() { Food food = new McDonalds_Chicken(); meal.AddFood(food); } public void BuildDrink() { Food food = new McDonalds_Drink(); meal.AddFood(food); } public Meal GetMeal() { return meal; } }
Director
class Director { private MealBuilder builder; public Director(MealBuilder builder) { this.builder = builder; } public Meal BuildMeal() { this.builder.BuildBurger(); this.builder.BuildChicken(); this.builder.BuildDrink(); return this.builder.GetMeal(); } }
Meal
public class Meal { private List<Food> foodList=new List<Food>(); public void AddFood(Food food) { this.foodList.Add(food); } public void show() { foreach (Food element in foodList) { element.deal(); } } }
Food
public interface Food { void deal(); }
KFC_Burger
public class KFC_Burger:Food { public void deal() { Console.WriteLine("您的KFC汉堡"); } }
KFCChicken
public class KFC_Chicken:Food { public void deal() { Console.WriteLine("您的KFC炸鸡"); } }
KFCDrink
public class KFC_Drink:Food { public void deal() { Console.WriteLine("您的KFC饮料"); } }
McDonaldsBurger
public class McDonalds_Burger:Food { public void deal() { Console.WriteLine("您的麦当劳汉堡"); } }
McDonaldsChicken
public class McDonalds_Chicken:Food { public void deal() { Console.WriteLine("您的麦当劳炸鸡"); } }
McDonaldsDrink
public class McDonalds_Drink:Food { public void deal() { Console.WriteLine("您的麦当劳饮料"); } }
Client
class Client { static void Main(string[] args) { MealBuilder b1 = new KFCBuilder(); Director d1 = new Director(b1); Meal meal1 = d1.BuildMeal(); meal1.show(); MealBuilder b2 = new McDonaldsBuilder(); Director d2 = new Director(b2); Meal meal2 = d2.BuildMeal(); meal2.show(); Console.Read(); } }