题目要求
相关UML如下:
具体代码实现如下:
/// <summary> /// 指挥者类 /// </summary> public class MealDirector { private MealBuilder _mealbuilder; public MealDirector(MealBuilder mealbuilder) { _mealbuilder = mealbuilder; } public Meal CreateMeal() { _mealbuilder.BuildBuger(); _mealbuilder.BuildChips(); _mealbuilder.buildDrink(); return _mealbuilder.GetMeal(); } }
/// <summary> /// 抽象建造者类 /// </summary> public abstract class MealBuilder { protected Meal _meal = new Meal(); public abstract void BuildBuger(); public abstract void BuildChips(); public abstract void buildDrink(); public Meal GetMeal() { return _meal; } }
// <summary> /// KFC套餐 具体建造者类 /// </summary> public class MealKFCBuilder:MealBuilder { public override void BuildBuger() { _meal.AddPart(new KFCBuger()); } public override void BuildChips() { _meal.AddPart(new KFCChips()); } public override void buildDrink() { _meal.AddPart(new KFCDrink()); } }
/// <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()); } }
/// <summary> /// 套餐类 /// </summary> public class Meal { protected List<part> _parts = new List<part>(); public void AddPart(part part1) { _parts.Add(part1); } public void Make() { foreach (part part1 in _parts) { part1.Make(); } } }
// <summary> /// 套餐产品抽象类 /// </summary> public abstract class part { public abstract void Make(); }
/// <summary> /// 汉堡部分 /// </summary> class BugerPart { } public class KFCBuger : part { public override void Make() { Console.WriteLine("KFC汉堡,递到了客户面前"); } } public class MBuger : part { public override void Make() { Console.WriteLine("麦当劳汉堡,递到了客户面前"); } }
/// <summary> /// 薯条部分 /// </summary> class ChipsPart { } public class KFCChips : part { public override void Make() { Console.WriteLine("KFC薯条,递到了客户面前"); } } public class MChips : part { public override void Make() { Console.WriteLine("麦当劳薯条,递到了客户面前"); } }
/// <summary> /// 饮料部分 /// </summary> class DrinkPart { } public class KFCDrink : part { public override void Make() { Console.WriteLine("KFC饮料,递到了客户面前"); } } public class MDrink : part { public override void Make() { Console.WriteLine("麦当劳饮料,递到了客户面前"); } }
//客户端代码 class Client { static void Main(string[] args) { MealKFCBuilder kfcbuilder = new MealKFCBuilder(); MealDirector kfcdirector = new MealDirector(kfcbuilder); kfcdirector.CreateMeal().Make(); Console.WriteLine("kfc套餐打包完毕,用户得到kfc套餐。"); Console.Read(); } }
结果如下:
原文:http://www.cnblogs.com/zjl931223/p/5096979.html