设计模式-外观模式

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

可是问题是不同的美女技术肯定不一样,简单工厂我们可以把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 一般尽量不要把选择分支放在客户端。

原文地址:https://www.cnblogs.com/ants_double/p/5488634.html