你的位置:首页 > ASP.net教程

[ASP.net教程]观察者模式:猫叫鼠跑人醒(C#)


  本着菜鸟先飞的想法,决定把平时遇到的知识点记录下来,一来是加深理解,二来是方便以后自己查阅。当您看到我这篇文章的时候,觉得代码有哪里不足的地方,请多指教,谢谢。(命名不规范是为了加深自己的理解,多多见谅。)

  观察者模式:即当目标对象状态或者是行为发生改变时,正在观察该目标对象的观察者们做出一系列自动反应。

  

1.接口实现public interface Oberver{void 坐出反应();}public interface BObserver{void 反应(Oberver o);}public class 老鼠 : Oberver{public 老鼠(BObserver b){b.反应(this);}public void 坐出反应(){Console.WriteLine("老鼠跑了...");}}public class 人 : Oberver{public 人(BObserver b){b.反应(this);}public void 坐出反应(){Console.WriteLine("人醒了...");}}public class 猫 : BObserver{List<Oberver> list;public 猫(){list = new List<Oberver>();}public void 反应(Oberver o){list.Add(o);}public void 猫叫(){foreach (Oberver o in list){o.坐出反应();}}2.委托和事件public delegate void 处理();public abstract class 被观察{public event 处理 处理事件;public void Test(){if (处理事件 != null) this.处理事件();} }public class 猫 : 被观察{public void 猫叫(){Console.WriteLine("猫叫了!");this.Test();}}public abstract class 观察者2{public 观察者2(被观察 b){b.处理事件 += new 处理(观察做出反应);}public abstract void 观察做出反应();}public class 老鼠 : 观察者2{public 老鼠(被观察 b) : base(b) { }public override void 观察做出反应(){Console.WriteLine("老鼠跑了......");}}public class 人 : 观察者2{public 人(被观察 b) : base(b) { }public override void 观察做出反应(){Console.WriteLine("人醒了......");}}

 

 第一次发帖感觉好乱,多多包含。—菜鸟先飞