建造者模式作业

下面是作业的要求:

  

  下面是设计的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     }

下面是结果:

  

原文地址:https://www.cnblogs.com/bldz/p/5089055.html