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();
}
}
}
观察者模式
最新推荐文章于 2024-03-27 10:22:08 发布