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