using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 觀察者模式 { class Program { static void Main(string[] args) { 看NBA的同事 zhangSan = new 看NBA的同事() { Name = "張三" }; 看NBA的同事 li = new 看NBA的同事() { Name = "李四" }; 看NBA的同事 ww = new 看NBA的同事() { Name = "王五" }; 打遊戲 xiaoWu = new 打遊戲() { Name = "小五" }; 老闆 xiaoLi = new 老闆(); xiaoLi.註冊(zhangSan); xiaoLi.註冊(li); xiaoLi.註冊(ww); xiaoLi.註冊(xiaoWu); xiaoLi.取消註冊(li); xiaoLi.通知(); Console.ReadLine(); } } public abstract class 被觀察者 { public List<觀察者> list = new List<觀察者>(); public abstract void 註冊(觀察者 ts); public abstract void 取消註冊(觀察者 ts); public abstract void 通知(); } public class 前臺 : 被觀察者 { public override void 註冊(觀察者 ts) { list.Add(ts); } public override void 取消註冊(觀察者 ts) { list.Remove(ts); } public override void 通知() { Console.WriteLine("老闆來了...."); foreach (觀察者 item in list) { item.更新(); } } } public class 老闆 : 被觀察者 { public override void 註冊(觀察者 ts) { list.Add(ts); } public override void 取消註冊(觀察者 ts) { list.Remove(ts); } public override void 通知() { Console.WriteLine("同志們,我回來了...."); foreach (觀察者 item in list) { item.更新(); } } } public abstract class 觀察者 { public string Name { get; set; } public abstract void 更新(); } public class 看NBA的同事 : 觀察者 { public override void 更新() { Console.WriteLine(Name + " 關掉NBA,開始工作......"); } } public class 打遊戲 : 觀察者 { public override void 更新() { Console.WriteLine(Name + " 關掉遊戲,開始工作。。。。"); } } }
觀察者模式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.