首页 > 代码库 > 观察者模式
观察者模式
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 + " 关掉游戏,开始工作。。。。"); } } }
本文出自 “Mr.Zhang” 博客,请务必保留此出处http://zhangzhipeng.blog.51cto.com/9115459/1575158
观察者模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。