【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

 

posted @ 2016-10-10 14:08  zscmj  阅读(120)  评论(0编辑  收藏  举报