建造者模式作业
下面是作业的要求:
下面是设计的uML类图:
下面是具体的代码;
1 /// <summary> 2 /// 指挥者类 3 /// </summary> 4 public class MealDirector 5 { 6 private MealBuilder _mealbuilder; 7 8 public MealDirector(MealBuilder mealbuilder) 9 { 10 _mealbuilder = mealbuilder; 11 } 12 13 public Meal CreateMeal() 14 { 15 _mealbuilder.BuildBuger(); 16 _mealbuilder.BuildChips(); 17 _mealbuilder.buildDrink(); 18 19 return _mealbuilder.GetMeal(); 20 } 21 }
1 /// <summary> 2 /// 抽象建造者类 3 /// </summary> 4 public abstract class MealBuilder 5 { 6 protected Meal _meal = new Meal(); 7 8 public abstract void BuildBuger(); 9 public abstract void BuildChips(); 10 public abstract void buildDrink(); 11 12 public Meal GetMeal() 13 { 14 return _meal; 15 } 16 }
1 // <summary> 2 /// KFC套餐 具体建造者类 3 /// </summary> 4 public class MealKFCBuilder:MealBuilder 5 { 6 public override void BuildBuger() 7 { 8 _meal.AddPart(new KFCBuger()); 9 } 10 11 public override void BuildChips() 12 { 13 _meal.AddPart(new KFCChips()); 14 } 15 16 public override void buildDrink() 17 { 18 _meal.AddPart(new KFCDrink()); 19 } 20 21 }
/// <summary> /// 麦当劳套餐 具体创建者类 /// </summary> public class MealMBuilder:MealBuilder { public override void BuildBuger() { _meal.AddPart(new MBuger()); } public override void BuildChips() { _meal.AddPart(new MChips()); } public override void buildDrink() { _meal.AddPart(new MDrink()); } }
1 /// <summary> 2 /// 套餐类 3 /// </summary> 4 public class Meal 5 { 6 protected List<part> _parts = new List<part>(); 7 8 public void AddPart(part part1) 9 { 10 _parts.Add(part1); 11 } 12 13 public void Make() 14 { 15 foreach (part part1 in _parts) 16 { 17 part1.Make(); 18 } 19 } 20 }
// <summary> /// 套餐产品抽象类 /// </summary> public abstract class part { public abstract void Make(); }
1 /// <summary> 2 /// 汉堡部分 3 /// </summary> 4 class BugerPart 5 { 6 } 7 8 public class KFCBuger : part 9 { 10 public override void Make() 11 { 12 Console.WriteLine("KFC汉堡,递到了客户面前"); 13 } 14 } 15 16 public class MBuger : part 17 { 18 public override void Make() 19 { 20 Console.WriteLine("麦当劳汉堡,递到了客户面前"); 21 } 22 }
1 /// <summary> 2 /// 薯条部分 3 /// </summary> 4 class ChipsPart 5 { 6 } 7 8 public class KFCChips : part 9 { 10 public override void Make() 11 { 12 Console.WriteLine("KFC薯条,递到了客户面前"); 13 } 14 } 15 16 public class MChips : part 17 { 18 public override void Make() 19 { 20 Console.WriteLine("麦当劳薯条,递到了客户面前"); 21 } 22 }
1 /// <summary> 2 /// 饮料部分 3 /// </summary> 4 class DrinkPart 5 { 6 } 7 8 public class KFCDrink : part 9 { 10 public override void Make() 11 { 12 Console.WriteLine("KFC饮料,递到了客户面前"); 13 } 14 } 15 16 public class MDrink : part 17 { 18 public override void Make() 19 { 20 Console.WriteLine("麦当劳饮料,递到了客户面前"); 21 } 22 }
1 //客户端代码 2 class Client 3 { 4 static void Main(string[] args) 5 { 6 MealKFCBuilder kfcbuilder = new MealKFCBuilder(); 7 MealDirector kfcdirector = new MealDirector(kfcbuilder); 8 kfcdirector.CreateMeal().Make(); 9 10 Console.WriteLine("kfc套餐打包完毕,用户得到kfc套餐。"); 11 Console.Read(); 12 } 13 }
下面是结果: