• 设计模式-外观模式


    昨天听豪哥说,美女停车,我一想现在美女会开的少之又少,会停的更是少的可怜,有的不服说我会很多种停车技术,谈到停车技术就让我们看看美女们的停车技术吧。

    可是问题是不同的美女技术肯定不一样,简单工厂我们可以把Man统一个制造,因为他们有相同的地方,可是停车技术都统一一下来源可能会有反效果,会使停车工厂更麻烦,所以我们用一个外观模式,也就是说不论你技术如何变化万千,我只告诉美女停车,有多少种看是那种美女了。

    原型图:

    代码如下:

     1   class ParkA
     2     {
     3         public void StopCarA()
     4         {
     5             Console.WriteLine("A技术停车");
     6 
     7         }
     8     }
     9 
    10  class ParkB
    11     {
    12         public void StopCarB()
    13         {
    14 
    15             Console.WriteLine("B技术停车");
    16         }
    17     }
    18 
    19  class ParkC
    20     {
    21         public void StopCarC()
    22         {
    23 
    24             Console.WriteLine("C 技术停车");
    25         }
    26     }
    27 
    28 class Face
    29     {
    30         ParkA pa;
    31         ParkB pb;
    32         ParkC pc;
    33         public Face()
    34         {
    35             pa = new ParkA();
    36             pb = new ParkB();
    37             pc = new ParkC();
    38         }
    39 
    40         public void StopCarOfOneSkill()
    41         {
    42             pa.StopCarA();
    43         }
    44 
    45         public void StopCarOfTwoSkill()
    46         {
    47             pa.StopCarA();
    48             pb.StopCarB();
    49         }
    50         public void StopCarOfThreeSkill()
    51         {
    52             pa.StopCarA();
    53             pb.StopCarB();
    54             pc.StopCarC();
    55             Console.WriteLine("you are clever,我喜欢多才的女生!!!");
    56         }
    57     }
    58 
    59 //client
    60  static void Main(string[] args)
    61         {
    62 
    63             Face fc = new Face();
    64             Console.WriteLine("你是会几种停车技术的美女?");
    65             string strNumberSkill = Console.ReadLine();
    66             do 
    67             {
    68                  switch (strNumberSkill)
    69             {
    70                 case "1":
    71                     fc.StopCarOfOneSkill();
    72                     break;
    73                 case "2":
    74                     fc.StopCarOfTwoSkill();
    75                     break;
    76                 case "3":
    77                     fc.StopCarOfThreeSkill();
    78                     break;
    79                 default:
    80                     break;
    81             }
    82                 strNumberSkill = Console.ReadLine();
    83             } while (! string.IsNullOrEmpty(strNumberSkill)  );
    84 
    85 
    86 
    87         }

     结果:为了方便写一个do while 一般尽量不要把选择分支放在客户端。

  • 相关阅读:
    java栈的实现复习
    条件判断语句--linux
    转义符&脚本参数--linux
    linux备份脚本-模板
    github的搜索使用技巧
    sonarqube7.9安装部署(linux)
    openjdk与oraclejdk下载
    gitlab重写历史,清理历史大文件
    nexus私服搭建过程
    nexus私服关联本地maven配置
  • 原文地址:https://www.cnblogs.com/ants_double/p/5488634.html
Copyright © 2020-2023  润新知