本著菜鳥先飛的想法,決定把平時遇到的知識點記錄下來,一來是加深理解,二來是方便以后自己查閱。當您看到我這篇文章的時候,覺得代碼有哪里不足的地方,請多指教,謝謝。(命名不規范是為了加深自己的理解,多多見諒。)
觀察者模式:即當目標對象狀態或者是行為發生改變時,正在觀察該目標對象的觀察者們做出一系列自動反應。
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("人醒了......");}}
第一次發帖感覺好亂,多多包含。—菜鳥先飛
新聞熱點
疑難解答