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

来源:互联网 发布:wix链接国内域名 编辑:程序博客网 时间:2024/06/06 00:19
//典型的抽象目标类代码: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();    }
0 0
原创粉丝点击