• 建造者模式


    以下是本程序的UML图以及代码:

     

    所需class如下:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace M_K2
     8 {
     9   class Program
    10   {
    11     static void Main(string[] args)
    12     {
    13       KFCSetMeal KFC = new KFCSetMeal();              //client
    14       SetMealDirector KFCDirector = new SetMealDirector(KFC);
    15       Console.WriteLine("Our team name is KFC...");
    16       KFCDirector.CreateSetMeal();
    17 
    18       MCDSetMeal MCD = new MCDSetMeal();
    19       SetMealDirector MCDDirector = new SetMealDirector(MCD);
    20       Console.WriteLine("Our team name is MCD...");
    21       MCDDirector.CreateSetMeal();
    22     }
    23   }
    24 }
    25 
    26 abstract class SetMeal                            //builder
    27 {
    28   public abstract void AddBurger();
    29   public abstract void AddChips();
    30   public abstract void AddDrink();
    31 }
    32 class SetMealDirector //director
    33 {
    34   private SetMeal _builder;
    35 
    36   public SetMealDirector(SetMeal builder)
    37   {
    38     _builder = builder;
    39   }
    40 
    41   public void CreateSetMeal()
    42   {
    43     _builder.AddBurger();
    44     _builder.AddChips();
    45     _builder.AddDrink();
    46   }
    47 }
    48 
    49 class KFCSetMeal : SetMeal                           //ConcreteBuilder
    50 {
    51   public KFCSetMeal() : base(){}
    52 
    53   public override void AddBurger()
    54   {
    55     Console.WriteLine("I am Burger from KFC...");
    56   }
    57 
    58   public override void AddChips()
    59   {
    60     Console.WriteLine("I am Chips from KFC...");
    61   }
    62 
    63   public override void AddDrink()
    64   {
    65     Console.WriteLine("I am Drink from KFC...");
    66   }
    67 }
    68 
    69 class MCDSetMeal : SetMeal                            //ConcreteBuilder
    70 {
    71   public MCDSetMeal() : base() {}
    72 
    73   public override void AddBurger()
    74   {
    75     Console.WriteLine("I am Burger from MCD...");
    76   }
    77 
    78   public override void AddChips()
    79   {
    80     Console.WriteLine("I am Chips from MCD...");
    81   }
    82 
    83   public override void AddDrink()
    84   {
    85     Console.WriteLine("I am Drink from MCD...");
    86   }
    87 }

    运行结果如下:

  • 相关阅读:
    软件项目技术点(12)——绘制生成的图表到canvas
    软件项目技术点(11)——大图变小图提高绘图性能
    软件项目技术点(10)——将视频video绘制到canvas
    Git代码版本控制流程
    TypeScript名词解释系列:tsconfg中的target,module和moduleResolution
    正则表达式基础知识
    node-npm发布包-package.json中bin的用法
    npm link的作用——避免频繁发布更新
    AI在出行场景的应用实践:路线规划、ETA、动态事件挖掘…
    2020高德技术年刊:18万字、750页+,智慧出行最佳技术实践都在这了
  • 原文地址:https://www.cnblogs.com/supercyr/p/5086763.html
Copyright © 2020-2023  润新知