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(); } } }
观察者模式
最新推荐文章于 2025-03-11 10:43:25 发布