• 我的设计模型之建造者模式


      1using System;
      2using System.Collections.Generic;
      3using System.Linq;
      4using System.Text;
      5using System.Collections;
      6using System.Configuration;
      7using System.Reflection;
      8namespace KFC
      9{
     10    class Program
     11    {
     12        static void Main(string[] args)
     13        {
     14            Director1 FoodBuilder = new Director1();
     15            Director2 FoodBuilder2 = new Director2();
     16            
     17            Console.WriteLine("请输入套餐编号:");
     18            string no = Console.ReadLine();
     19            string foodType = ConfigurationSettings.AppSettings["No" + no];
     20            switch (foodType) 
     21                case "NormalBuilder":
     22                    NormalBuilder Normal = new NormalBuilder();
     23                    FoodBuilder.Construct(Normal);
     24                    Food food = Normal.GetFoods();
     25                    food.Show();
     26                    break;
     27                case "GoldBuilder":
     28                    GoldBuilder Gold = new GoldBuilder();
     29                    FoodBuilder.Construct(Gold);
     30                    Food GoldFood = Gold.GetFoods();
     31                    GoldFood.Show();
     32                    break;
     33                case "another Director":
     34                    GoldBuilder GoldDirect2 = new GoldBuilder();
     35                    FoodBuilder2.Construct(GoldDirect2);
     36                    Food food2 = GoldDirect2.GetFoods();
     37                    food2.Show();
     38                    break;
     39            }

     40        }

     41    }

     42    public abstract class FoodClass {
     43        public abstract void Construct(Builder builder);
     44    }

     45    //class FoodMamanger {
     46    //    public void Construct(Builder builder) {
     47            //builder.BuilderHamb();
     48            //builder.BuilderCoke();
     49            //builder.BuilderChip();
     50    //    }
     51    //}
     52    class Director1 : FoodClass {
     53        public override void Construct(Builder builder)
     54        {
     55            builder.BuilderHamb();
     56            builder.BuilderCoke();
     57            builder.BuilderChip();
     58        }

     59    }

     60    class Director2 : FoodClass {
     61        public override void Construct(Builder builder)
     62        {
     63            builder.BuilderChicken();
     64            builder.BuilderChip();
     65            builder.BuilderCoke();
     66        }

     67    }

     68    public class Food {
     69        /// <summary>
     70        /// Food 食物类
     71        /// </summary>

     72        Hashtable food = new Hashtable();
     73        public void add(string FoodName,string Price) {
     74            food.Add(FoodName, Price);
     75        }

     76        public void Show() {
     77           // IDictionaryEnumerator MyEnumerator = food.GetEnumerator();
     78            
     79            Console.WriteLine("Food List:");
     80            Console.WriteLine("---------------------");
     81            string Foodlist = "";
     82            foreach (DictionaryEntry De in food) {
     83                Foodlist = Foodlist + "\n\n" + De.Key.ToString();
     84                Foodlist = Foodlist + De.Value.ToString();
     85            }

     86            Console.WriteLine(Foodlist);
     87            Console.WriteLine("---------------------");
     88            Console.ReadLine();
     89        }

     90    }

     91    public abstract class Builder {
     92        /// <summary>
     93        /// 建造者虚类,添加虚方法
     94        /// </summary>

     95        public abstract void BuilderHamb();
     96        public abstract void BuilderCoke();
     97        public abstract void BuilderChip();
     98        public abstract void BuilderChicken();
     99        public abstract Food GetFoods();
    100    }

    101    public class NormalBuilder : Builder {
    102        private Food NormalFood = new Food(); 
    103        public override void  BuilderHamb()
    104        {
    105            NormalFood.add("Normal Hamb""¥10.50");
    106        }

    107        public override void BuilderCoke()
    108        {
    109            NormalFood.add("Normal Coke""¥7.00");
    110        }

    111        public override void BuilderChip()
    112        {
    113            NormalFood.add("FireChip""¥7.00");
    114        }

    115        public override void BuilderChicken()
    116        {
    117            NormalFood.add("上校鸡块""¥15.00");
    118        }

    119        public override Food GetFoods()
    120        {
    121            return NormalFood;
    122        }

    123    
    124    }

    125    public class GoldBuilder : Builder {
    126        private Food GoldFood = new Food();
    127        public override void BuilderHamb()
    128        {
    129            GoldFood.add("Gold版 Hamb""¥12.000");
    130        }

    131        public override void BuilderCoke()
    132        {
    133            GoldFood.add("Gold版 Coke""¥8.00");
    134        }

    135        public override void BuilderChip()
    136        {
    137            GoldFood.add("Gold版FireChip""¥8.00");
    138        }

    139        public override void BuilderChicken()
    140        {
    141            GoldFood.add("Gold版上校鸡块""¥16.00");
    142        }

    143        public override Food GetFoods()
    144        {
    145            return GoldFood;
    146        }

    147      
    148    }

    149}
  • 相关阅读:
    关于策略模式和简单工厂模式的理解
    ab压力测试使用说明
    PHP AMQP扩展安装
    ELK配置说明及个人理解
    冒泡算法和快速排序算法实现和比较
    rabbitMQ PHP 链接实例
    关于长连接和短连接的理解及使用场景
    ABP框架 替换默认审计实现
    System.DllNotFoundException: Unable to load shared library 'libdl' or one of its dependencies .NET Core 图片操作在 Linux/Docker 下的坑
    docker 学习资料
  • 原文地址:https://www.cnblogs.com/DrEdison/p/1142150.html
Copyright © 2020-2023  润新知