观察者模式

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace observerModel { interface Subject { void Attach(Observer observer); void Detach(Observer observer); void Notice(); string Action { get; set; } } class Boss:Subject { public List<Observer> observers = new List<Observer>(); private string action; public void Attach(Observer observer) { observers.Add(observer); } public void Detach(Observer observer) { observers.Remove(observer); } public void Notice() { foreach (Observer observer in observers) { observer.Update(); } } public string Action { get { return action; } set { action = value; } } } class Secretary : Subject { public List<Observer> observers = new List<Observer>(); private string action; public void Attach(Observer observer) { observers.Add(observer); } public void Detach(Observer observer) { observers.Remove(observer); } public void Notice() { foreach (Observer observer in observers) { observer.Update(); } } public string Action { get { return action; } set { action = value; } } } abstract class Observer { public string name; public Subject subject; public Observer(string name, Subject subject) { this.name = name; this.subject = subject; } public abstract void Update(); } class Player:Observer { public Player(string name,Subject subject) : base (name,subject) { } public override void Update() { Console.WriteLine("{0},{1} need to close game", subject.Action, name); } } class StockObserver : Observer { public StockObserver(string name, Subject subject) : base(name, subject) { } public override void Update() { Console.WriteLine("{0},{1} need to close stock", subject.Action, name); } } class Program { static void Main(string[] args) { Boss laoda = new Boss(); Player p1 = new Player("huguo", laoda); StockObserver s1 = new StockObserver("aa", laoda); laoda.Attach(p1); laoda.Attach(s1); laoda.Action = "The boss Enters into office"; laoda.Notice(); Console.WriteLine("------------------------------------"); Secretary Lili = new Secretary(); Player p2 = new Player("cc", Lili); Lili.Attach(p2); Lili.Action = "The leader review the work"; Lili.Notice(); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值