觀察者 模式
觀察者 模式
觀察者 模式
觀察者 模式
又叫做發佈訂閱模式,一到多個觀察者會監聽
某一個主題物件。當主題物件狀態發生變化時,
會通知所有觀察者物件,使它們能夠自動更新
自己。
abstract class Subject
{
private IList
public void Attach(Observer observer)
{
observers.Add(observer);
}
public void Detach(Observer observer)
{
observer.Remove(observer);
}
public void Notify()
{
foreach(Observer o in observers)
{
o.Update();
}
}
}
abstract class Observer
{
public abstract void Update();
}
class ConcreteSubject : Subject
{
private string subjectState;
public string SubjectState
{
get { return subjectState; }
set { subjectState = value; }
}
}
class ConcreteObserver : Observer
{
private string name;
private string observerState;
private ConcreteSubject subject;
public ConcreteObserver(ConcreteSubject subject, string name)
{
this.subject = subject;
this.name = name;
}
public override void Update()
{
observerState = subject.SubjectState;
Console.WriteLine("觀察者{0}的新狀態{1}", name, observerState);
}
public ConcreteSubject Subject
{
get { return subject; }
set { subject = value; }
}
}
static void Main(string[] args)
{
ConcreteSubject s = new ConcreteSubject();
s.Attach(new ConcreteObserver(s, “X”));
s.Attach(new ConcreteObserver(s, “Y”));
s.Attach(new ConcreteObserver(s, “Z”));
s.SubjectState = “ABC”;
s.Notify();
}