【2016-10-10】【坚持学习】【Day1】【观察者模式】

今天学习了观察者模式

定义:

一个实体变化会影响其他实体变化

例子:

红绿灯与汽车

红绿灯是观察目标

汽车是实际观察者

灯的变化会影响车是停止还是前进。

例子:

游戏中,一个战队由若干队员组成,当其中一个受到攻击,就要通过战队中心呼叫其他队友支援。

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();
}
View Code
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();
        }
    }
}
View Code
interface Observer
{
    void Update();
}


class ConcreteObserver : Observer
{
                 //实现响应方法
    public void Update()
    {
        //具体更新代码
    }
}
View Code

 调用

……
Subject subject = new ConcreteSubject();
Observer observer = new ConcreteObserver();
subject.Attach(observer);
subject.Notify();
……
View Code

作者:zscmj
出处:http://www.cnblogs.com/zscmj/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/zscmj/p/5952587.html