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

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 using System.Threading.Tasks;
      6 
      7 namespace KFC_MacDonald_Bulid
      8 {
      9     class Program
     10     {
     11         //客户端代码
     12         static void Main(string[] args)
     13         {
     14 
     15             KFCBuilder kfc = new KFCBuilder();
     16             MealDirector kfcdirector = new MealDirector(kfc);
     17             kfcdirector.CreateMeal().Show();
     18 
     19             MBuilder m = new MBuilder();
     20             MealDirector mdirector = new MealDirector(m);
     21             mdirector.CreateMeal().Show();
     22 
     23         }
     24 
     25         //Meal类
     26         class Meal
     27         {
     28             protected List<Part> _parts = new List<Part>();
     29             public void AddPart(Part part)
     30             {
     31                 _parts.Add(part);
     32             }
     33 
     34             public void Show()
     35             {
     36                 foreach(Part part in _parts)
     37                 {
     38                     part.Show();
     39                 }
     40             }
     41         }
     42 
     43         //Part类
     44         abstract class Part
     45         {
     46             public Part()
     47             {}
     48 
     49             public abstract void Show();
     50         }
     51 
     52         class KFCBurger:Part
     53         {
     54 
     55             public KFCBurger():base()
     56             { }
     57             public override void Show()
     58             {
     59                 Console.WriteLine("KFCBurger is ready");//输出"KFCBurger is ready"    
     60             }
     61         }
     62 
     63         class KFCChips : Part
     64         {
     65              public KFCChips():base()
     66             { }
     67             public override void Show()
     68             {
     69                 Console.WriteLine("KFCChips is ready");//输出"KFCChips is ready"    
     70             }
     71         }
     72 
     73         class KFCDrink : Part
     74         {
     75             public KFCDrink()
     76                 : base()
     77             { }
     78             public override void Show()
     79             {
     80                 Console.WriteLine("KFCDrink is ready");//输出"KFCDrink is ready"    
     81             }
     82         }
     83 
     84         class MBurger:Part
     85         {
     86              public MBurger():base()
     87             { }
     88             public override void Show()
     89             {
     90                 Console.WriteLine("MBurger is ready");//输出"KFCBurger is ready"    
     91             }
     92         }
     93 
     94         class MChips : Part
     95         {
     96             public MChips():base()
     97             { }
     98             public override void Show()
     99             {
    100                 Console.WriteLine("MChips is ready");//输出"MChips is ready"    
    101             }
    102         }
    103 
    104         class MDrink : Part
    105         {
    106                public MDrink():base()
    107             { }
    108             public override void Show()
    109             {
    110                 Console.WriteLine("MDrink is ready");//输出"MDrink is ready"    
    111             }
    112         }
    113         //抽象建造者
    114         abstract class MealBuilder
    115         {
    116             protected string _g;
    117             protected Meal _meal = new Meal();
    118             public MealBuilder()
    119             {  }
    120             public abstract void BuildBurger();
    121             public abstract void BuildChips();
    122             public abstract void BuildDrink();
    123             public Meal GetMeal()
    124             {
    125                 return _meal;
    126             }
    127         }
    128 
    129         //具体建造者
    130         class KFCBuilder:MealBuilder
    131         {
    132              public KFCBuilder():base()
    133             { }
    134 
    135             public override void BuildBurger()
    136             {
    137                 _meal.AddPart(new KFCBurger());
    138             }
    139 
    140             public override void BuildChips()
    141             {
    142                 _meal.AddPart(new KFCChips());
    143             }
    144 
    145             public override void BuildDrink()
    146             {
    147                 _meal.AddPart(new KFCDrink());
    148             }
    149         }
    150 
    151         class MBuilder : MealBuilder
    152         {
    153               public MBuilder(): base()
    154               {}
    155             
    156 
    157             public override void BuildBurger()
    158             {
    159                 _meal.AddPart(new MBurger());
    160             }
    161 
    162             public override void BuildChips()
    163             {
    164                 _meal.AddPart(new MChips());
    165             }
    166 
    167             public override void BuildDrink()
    168             {
    169                 _meal.AddPart(new MDrink());
    170             }
    171         }
    172         //指挥者
    173         class MealDirector
    174         {
    175             private MealBuilder _builder;
    176             public MealDirector(MealBuilder builder)
    177             {
    178                 _builder = builder;
    179             }
    180 
    181             public Meal CreateMeal()
    182             {
    183                 _builder.BuildBurger();
    184                 _builder.BuildChips();
    185                 _builder.BuildDrink();
    186 
    187                 return _builder.GetMeal();
    188             }
    189         }
    190 
    191     }
    192 }
  • 相关阅读:
    HighTec-Eclipse for Tricore 的安装方法
    http升级https遇到的问题
    symfony中模板生成路径两种方式
    http请求在https中使用
    git tag标签
    Git查看两个版本之间修改了哪些文件
    mysql将语句写入表中
    使用fiddler抓包模拟器及配置fiddler过滤
    Mixed Content: The page at 'xxx' was loaded over HTTPS, but requested an insecure resource 'xxx'.
    nginx 禁止某IP访问
  • 原文地址:https://www.cnblogs.com/CHUR/p/5023896.html
Copyright © 2011-2022 走看看