抽象通知者Subject类
当观察者发生变化,通过Notify接口通知所有观察者。避免直接的实现,降低耦合。
[csharp]
<span style="font-size:12px;">abstract class Subject
{
private IList<Observer> observers = new List<Observer >();
//增加观察者
public void Attach(Observer observer)
{
observers.Add(observer );
}
//移除观察者
public void Detach(Observer observer)
{
observers.Remove(observer );
}
//通知
public void Notify()
{
foreach (Observer o in observers)
{
o.Update();
}
}
}</span>
抽象观察者Observers类
当得到主题通知时,调用Update。称为更新接口
[csharp]
<span style="font-size:10px;">abstract class Observer
{
public abstract void Update();
}
abstract class Subject</span>
具体观察者concreteObserver类
实现抽象观察者的update接口,更新当前状态。
[csharp]
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 );
}
}
客户端
[csharp]
static void Main(string[] args)
{
ConcreteSubject a = new ConcreteSubject();
a.Attach(new ConcreteObserver (a,"b"));
a.SubjectState = "状态a";
a.Notify();
Console.Read();
}
补充:软件开发 , C# ,