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

    运行结果如下:

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

  • 相关阅读:
    通过Maven简单搭建SSM框架
    javaWeb常用面试题
    到底什么是对象,什么是对象的引用?对象和对象的引用有那些区别?
    第二章 python中重要的数据结构(下)
    第一章 python中重要的数据结构(上)
    springboot 集成完整的swagger2
    JAVA -> 数据加密和解密 留存
    mac rar文件解压缩
    java 图片合成文字或者awt包下的对话框引入自定义字体库
    java中list或数组中随机子集工具类
  • 原文地址:https://www.cnblogs.com/Elix-kakulo/p/5003553.html
Copyright © 2011-2022 走看看