题目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 }