C#学习笔记-外观模式

题目:股民买卖股票

实现:

 1         static void Main(string[] args)
 2         {
 3             Stock1 gu1 = new Stock1();
 4             Stock2 gu2 = new Stock2();
 5             Stock3 gu3 = new Stock3();
 6             NationalDebt1 nd1 = new NationalDebt1();
 7             Realty1 rt1 = new Realty1();
 8 
 9             gu1.Buy();
10             gu2.Buy();
11             gu3.Buy();
12             nd1.Buy();
13             rt1.Buy();
14 
15             gu1.Sell();
16             gu2.Sell();
17             gu3.Sell();
18             nd1.Sell();
19             rt1.Sell();
20 
21             Console.Read();
22         }
23 
24         /// <summary>
25         /// 股票
26         /// </summary>
27         class Stock1
28         {
29             public void Sell()
30             {
31                 Console.WriteLine("股票1卖出");
32             }
33             public void Buy()
34             {
35                 Console.WriteLine("股票1买入");
36             }
37         }
38 
39         class Stock2
40         {
41             public void Sell()
42             {
43                 Console.WriteLine("股票2卖出");
44             }
45             public void Buy()
46             {
47                 Console.WriteLine("股票2买入");
48             }
49         }
50 
51         class Stock3
52         {
53             public void Sell()
54             {
55                 Console.WriteLine("股票3卖出");
56             }
57             public void Buy()
58             {
59                 Console.WriteLine("股票3买入");
60             }
61         }
62 
63         /// <summary>
64         /// 国债
65         /// </summary>
66         class NationalDebt1
67         {
68             public void Sell()
69             {
70                 Console.WriteLine("国债1卖出");
71             }
72             public void Buy()
73             {
74                 Console.WriteLine("国债1买入");
75             }
76         }
77 
78         /// <summary>
79         /// 房地产
80         /// </summary>
81         class Realty1
82         {
83             public void Sell()
84             {
85                 Console.WriteLine("房产1卖出");
86             }
87 
88             //买房地产
89             public void Buy()
90             {
91                 Console.WriteLine("房产1买入");
92             }
93         }
View Code

题目延伸1:对于股民而言,自己需要去了解不同的股票、公司、政策、发展等等各种情况,所以特别难以了解到股票的潜质,这个时候就出现了专业的经理人,他们可以帮助实现投资,用户就完全不需要了解关于股票的各种细节,只需要投资和撤资就好了。

实现:

  1         static void Main(string[] args)
  2         {
  3             //此时用户不需要了解股票,甚至可以对股票一无所知
  4             //参与股票的具体买卖都由基金公司独立完成
  5             //这样客户端的代码就非常简洁明了
  6             Fund jijin = new Fund();
  7             jijin.Buy();
  8             jijin.Sell();
  9 
 10             Console.Read();
 11         }
 12         
 13         /// <summary>
 14         /// 经理人
 15         /// </summary>
 16         class Fund
 17         {
 18             Stock1 gu1;
 19             Stock2 gu2;
 20             Stock3 gu3;
 21             NationalDebt1 nd1;
 22             Realty1 rt1;
 23 
 24             public Fund()
 25             {
 26                 gu1 = new Stock1();
 27                 gu2 = new Stock2();
 28                 gu3 = new Stock3();
 29                 nd1 = new NationalDebt1();
 30                 rt1 = new Realty1();
 31             }
 32 
 33             public void Buy()
 34             {
 35                 gu1.Buy();
 36                 gu2.Buy();
 37                 gu3.Buy();
 38                 nd1.Buy();
 39                 rt1.Buy();
 40             }
 41 
 42             public void Sell()
 43             {
 44                 gu1.Sell();
 45                 gu2.Sell();
 46                 gu3.Sell();
 47                 nd1.Sell();
 48                 rt1.Sell();
 49             }
 50         }
 51 
 52         class Stock1
 53         {
 54             public void Buy()
 55             {
 56                 Console.WriteLine("buy stock1");
 57             }
 58 
 59             public void Sell()
 60             {
 61                 Console.WriteLine("sell stock1");
 62             }
 63         }
 64 
 65         class Stock2
 66         {
 67             public void Buy()
 68             {
 69                 Console.WriteLine("buy stock2");
 70             }
 71 
 72             public void Sell()
 73             {
 74                 Console.WriteLine("sell stock2");
 75             }
 76         }
 77 
 78         class Stock3
 79         {
 80             public void Buy()
 81             {
 82                 Console.WriteLine("buy stock3");
 83             }
 84 
 85             public void Sell()
 86             {
 87                 Console.WriteLine("sell stock3");
 88             }
 89         }
 90 
 91         class NationalDebt1
 92         {
 93             public void Buy()
 94             {
 95                 Console.WriteLine("buy nationaldebt1");
 96             }
 97 
 98             public void Sell()
 99             {
100                 Console.WriteLine("sell nationaldebt1");
101             }
102         }
103 
104         class Realty1
105         {
106             public void Buy()
107             {
108                 Console.WriteLine("buy realty1");
109             }
110 
111             public void Sell()
112             {
113                 Console.WriteLine("sell realty1");
114             }
115         }
View Code

解析:

这里也就是所说的外观模式。

外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

注:文中所有代码及知识点均来自于《大话设计模式》,本人属于边学边看边敲代码边总结的阶段。

原文地址:https://www.cnblogs.com/Aries-rong/p/7611284.html