zoukankan      html  css  js  c++  java
  • M_K2之建造者模式

    Key point: director----builder----concrete builder

    UML图如下:

    所需class如下:

    具体代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace M_K2
    {
      class Program
      {
        static void Main(string[] args)
        {
          KFCSetMeal KFC = new KFCSetMeal();              //client
          SetMealDirector KFCDirector = new SetMealDirector(KFC);
          Console.WriteLine("Our team name is KFC...");
          KFCDirector.CreateSetMeal();

          MCDSetMeal MCD = new MCDSetMeal();
          SetMealDirector MCDDirector = new SetMealDirector(MCD);
          Console.WriteLine("Our team name is MCD...");
          MCDDirector.CreateSetMeal();
        }
      }
    }

    abstract class SetMeal                            //builder
    {
      public abstract void AddBurger();
      public abstract void AddChips();
      public abstract void AddDrink();
    }
    class SetMealDirector //director
    {
      private SetMeal _builder;

      public SetMealDirector(SetMeal builder)
      {
        _builder = builder;
      }

      public void CreateSetMeal()
      {
        _builder.AddBurger();
        _builder.AddChips();
        _builder.AddDrink();
      }
    }

    class KFCSetMeal : SetMeal                           //ConcreteBuilder
    {
      public KFCSetMeal() : base(){}

      public override void AddBurger()
      {
        Console.WriteLine("I am Burger from KFC...");
      }

      public override void AddChips()
      {
        Console.WriteLine("I am Chips from KFC...");
      }

      public override void AddDrink()
      {
        Console.WriteLine("I am Drink from KFC...");
      }
    }

    class MCDSetMeal : SetMeal                            //ConcreteBuilder
    {
      public MCDSetMeal() : base() {}

      public override void AddBurger()
      {
        Console.WriteLine("I am Burger from MCD...");
      }

      public override void AddChips()
      {
        Console.WriteLine("I am Chips from MCD...");
      }

      public override void AddDrink()
      {
        Console.WriteLine("I am Drink from MCD...");
      }
    }

    运行结果如下:

    应用: 将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示 

  • 相关阅读:
    【笔记篇】(理论向)快速傅里叶变换(FFT)学习笔记w
    【学术篇】bzoj2440 [中山市选2011]完全平方数
    【笔记篇】斜率优化dp(五) USACO08MAR土地购(征)买(用)Land Acquisition
    【笔记篇】斜率优化dp(四) ZJOI2007仓库建设
    【笔记篇】斜率优化dp(三) APIO2010特别行动队
    【笔记篇】斜率优化dp(二) SDOI2016征途
    【笔记篇】斜率优化dp(一) HNOI2008玩具装箱
    【笔记篇】单调队列优化dp学习笔记&&luogu2569_bzoj1855股票交♂易
    usr/include/php5/ext/pcre/php_pcre.h:29:18: fatal error: pcre.h 错误解决
    ubuntu 使用apt-get install 安装php5.6--php7
  • 原文地址:https://www.cnblogs.com/Elix-kakulo/p/5003553.html
Copyright © 2011-2022 走看看