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...");
      }
    }

    运行结果如下:

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

  • 相关阅读:
    即将到来的“分布式云”(DPaaS):分布式计算+ DB +存储即服务
    【玩转MLS系列】基础教程
    【云速建站】微信公众平台中维护IP白名单
    基于华为云对话机器人技能平台的规则模板概述
    云享专家倪升武:微服务架构盛行的时代,你需要了解点 Spring Boot
    Python一秒搭建ftp服务器,帮助你在局域网共享文件
    华为担纲建设基础软硬件国家新一代AI开放创新平台
    基于华为云区块链服务快速部署和搭建链上应用
    protobuf代码生成
    python的str()和repr()的区别
  • 原文地址:https://www.cnblogs.com/Elix-kakulo/p/5003553.html
Copyright © 2011-2022 走看看