您的位置:首页 > 其它

观察者模式 /发布-订阅(Publish/Subscribe)/模型-视图(Model/View)/源-监听器(Source/Listener)/从属者(Dependents) 模式

2017-03-21 03:30 573 查看
//典型的抽象目标类代码:
using System.Collection;
abstract class Subject
{
//定义一个观察者集合用于存储所有观察者对象
protected ArrayList observers = new ArrayList();
//声明抽象注册方法,用于向观察者集合中增加一个观察者
public abstract void Attach(Observer observer);
//声明抽象注销方法,用于在观察者集合中删除一个观察者
public abstract void Detach(Observer observer);
//声明抽象通知方法
public abstract void Notify();
}

//典型的具体目标类代码:
class ConcreteSubject : Subject
{
public override void Attach(Observer observer)
{
observers.Add(observer);
}

public override void Detach(Observer observer)
{
observers.Remove(observer);
}

//实现通知方法
public override void Notify()
{
//遍历观察者集合,调用每一个观察者的响应方法
foreach (object obs in observers)
{
((Observer)obs).Update();
}
}
}

//典型的抽象观察者代码:
interface Observer
{
void Update();
}

//典型的具体观察者代码:
class ConcreteObserver : Observer
{
//实现响应方法
public void Update()
{
//具体更新代码
}
}
//典型的客户端代码片段:
{
Subject subject = new ConcreteSubject();
Observer observer = new ConcreteObserver();
subject.Attach(observer);
subject.Notify();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: