题目1:几个同事为了在上班期间偷偷看休息,做点其他的事情,就和小秘偷偷联系了一下,如果老板回来了,就麻烦小秘偷偷通知一声,这样方便大家及时变更自己的工作状态。

分析:

  根据题目分析,首先明确,肯定会有两个类:小秘类和同事类,分别描述与记录两种类型的人和行为。

  需要注意的是:小秘与同事构建联系的时候,一个小秘可能对应多位同事,所以这时需要利用List<>。

实现:

 1     class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             Secretary lady = new Secretary();
 6             StockObserver num1 = new StockObserver("A", lady);
 7             StockObserver num2 = new StockObserver("B", lady);
 8 
 9             lady.Attach(num1);
10             lady.Attach(num2);
11 
12             lady.SecretAction="boss is back";
13             lady.Notify();
14 
15             Console.Read();
16         }
17     }
18 
19     /// <summary>
20     /// 小秘
21     /// 1.记下需要联系的同事们List<StockObserver>
22     /// 2.增加需要联系的人员
23     /// 3.减少联系人员(有可能没有通知到,有可能人员辞职等)
24     /// 4.秘密通知同事,老板回来了
25     /// </summary>
26     class Secretary
27     {
28         IList<StockObserver> stockOb = new List<StockObserver>();
29         private string action;
30 
31         public string SecretAction
32         {
33             get
34             {
35                 return action;
36             }
37 
38             set
39             {
40                 action = value;
41             }
42         }
43 
44         //增加需要联系的人员
45         public void Attach(StockObserver ob)
46         {
47             stockOb.Add(ob);
48         }
49 
50         //减少需要联系的人员
51         public void Detach(StockObserver ob)
52         {
53             stockOb.Remove(ob);
54         }
55 
56         //小秘通知了同事后,同事赶紧自行更改工作状态
57         public void Notify()
58         {
59             foreach (StockObserver o in stockOb)
60                 o.Update();
61         }
62     }
63 
64     /// <summary>
65     /// 看股票的同事
66     /// 1.联系小秘,和小秘保持良好关系
67     /// 2.根据小秘的偷偷通知修改自己的工作状态
68     /// </summary>
69     class StockObserver
70     {
71         private string name;
72         private Secretary sec;
73 
74         public StockObserver(string name,Secretary sec)
75         {
76             this.name = name;
77             this.sec = sec;
78         }
79         public void Update()
80         {
81             Console.WriteLine("{0} {1} 关闭股票行情,继续工作!", sec.SecretAction, name);
82         }
83     }
View Code

相关文章:

  • 2022-12-23
  • 2022-01-18
  • 2021-09-30
  • 2022-01-13
  • 2021-06-30
  • 2022-12-23
猜你喜欢
  • 2021-11-24
  • 2022-12-23
  • 2021-06-12
  • 2021-08-05
  • 2021-08-07
  • 2021-09-17
相关资源
相似解决方案