您的位置:首页 > 其它

观察者模式

2015-10-14 21:01 246 查看
一、模式的动机

建立一种对象与对象之间的依赖关系。一个对象发生变化时将自己主动通知其它对象。其它对象将对应做出反应。发生改变的对象称为观察目标,而被通知的对象称为观察者。



二、模式定义

观察者模式(Observer Pattern):定义了对象间一种一对多的依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自己主动更新。

三、模式结构



四、模式分析

1)观察者模式描写叙述了怎样建立对象与对象之间的依赖关系。

2)这一模式中的关键对象是观察目标和观察者。一个目标能够有多个观察者,当观察目标的状态发生变化时。全部的观察者都将得到通知。

3)观察者得到通知后。即时更新自己的状态,与观察目标同步。

五、模式代码

1)抽象目标类

public abstract class Subject {
protected ArrayList observers =new ArrayList();//观察者数组
public abstract void attach(Observer1 observer);//加入观察者
public abstract void detach(Observer1 observer);//删除观察者
public abstract void nontify();//通知观察者
}

2)详细目标类

public class ConcreteSubject extends Subject {
//private Observer1 observer;
public  void attach(Observer1 observer){
observers.add(observer);
}
public  void detach(Observer1 observer){
observers.remove(observer);
}
public  void nontify() {
//使用for遍历循环通知全部观察者
for(Object obs:observers){
((Observer1)obs).update();
}
}
}

3)抽线观察者

public interface Observer1 {
public void  update();
}

4)详细观察者

public  class ConcreteObserver implements Observer1 {
public void update() {
//更新相关的方法
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: