标签:
本着菜鸟先飞的想法,决定把平时遇到的知识点记录下来,一来是加深理解,二来是方便以后自己查阅。当您看到我这篇文章的时候,觉得代码有哪里不足的地方,请多指教,谢谢。(命名不规范是为了加深自己的理解,多多见谅。)
观察者模式:即当目标对象状态或者是行为发生改变时,正在观察该目标对象的观察者们做出一系列自动反应。
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("人醒了......"); } }
第一次发帖感觉好乱,多多包含。—菜鸟先飞
标签:
原文地址:http://www.cnblogs.com/hellowukui/p/4885508.html