
1 namespace Observer 2 { 3 public interface Subject 4 { 5 void Notify(); 6 7 string SubjectState 8 { 9 get; 10 set; 11 } 12 } 13 }

1 using System; 2 3 namespace Observer 4 { 5 /// <summary> 6 /// 作者:bzyzhang 7 /// 时间:2016/5/28 8:46:39 8 /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9 /// Boss说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10 /// </summary> 11 public class Boss:Subject 12 { 13 public event EventHandler Update; 14 15 private string action; 16 17 public void Notify() 18 { 19 Update(); 20 } 21 22 public string SubjectState 23 { 24 get 25 { 26 return action; 27 } 28 set 29 { 30 action = value; 31 } 32 } 33 } 34 }

1 using System; 2 3 namespace Observer 4 { 5 /// <summary> 6 /// 作者:bzyzhang 7 /// 时间:2016/5/28 8:48:31 8 /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9 /// Secretary说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10 /// </summary> 11 public class Secretary:Subject 12 { 13 public event EventHandler Update; 14 15 private string action; 16 17 public void Notify() 18 { 19 Update(); 20 } 21 22 public string SubjectState 23 { 24 get 25 { 26 return action; 27 } 28 set 29 { 30 action = value; 31 } 32 } 33 } 34 }

1 using System; 2 3 namespace Observer 4 { 5 public delegate void EventHandler(); 6 }

1 using System; 2 3 namespace Observer 4 { 5 /// <summary> 6 /// 作者:bzyzhang 7 /// 时间:2016/5/28 8:37:06 8 /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9 /// StockObserver说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10 /// </summary> 11 public class StockObserver 12 { 13 private string name; 14 private Subject subject; 15 16 public StockObserver(string name,Subject subject) 17 { 18 this.name = name; 19 this.subject = subject; 20 } 21 22 public void CloseStockMarket() 23 { 24 Console.WriteLine("{0}{1} 关闭股票行情,继续工作!",subject.SubjectState,name); 25 } 26 } 27 }

1 using System; 2 3 namespace Observer 4 { 5 /// <summary> 6 /// 作者:bzyzhang 7 /// 时间:2016/5/28 8:42:40 8 /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9 /// NBAObserver说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10 /// </summary> 11 public class NBAObserver 12 { 13 private string name; 14 private Subject subject; 15 16 public NBAObserver(string name,Subject subject) 17 { 18 this.name = name; 19 this.subject = subject; 20 } 21 22 public void CloseNBADirectSeeding() 23 { 24 Console.WriteLine("{0}{1} 关闭NBA直播,继续工作!",subject.SubjectState,name); 25 } 26 } 27 }

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Observer 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 Boss huhansan = new Boss(); 14 15 StockObserver stockObserver = new StockObserver("魏关姹",huhansan); 16 NBAObserver nbaObserver = new NBAObserver("易管查",huhansan); 17 18 huhansan.Update += new EventHandler(stockObserver.CloseStockMarket); 19 huhansan.Update += new EventHandler(nbaObserver.CloseNBADirectSeeding); 20 21 huhansan.SubjectState = "我胡汉三回来了!"; 22 huhansan.Notify(); 23 } 24 } 25 }