观察者模式
2015-10-14 21:01
246 查看
一、模式的动机
建立一种对象与对象之间的依赖关系。一个对象发生变化时将自己主动通知其它对象。其它对象将对应做出反应。发生改变的对象称为观察目标,而被通知的对象称为观察者。
二、模式定义
观察者模式(Observer Pattern):定义了对象间一种一对多的依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自己主动更新。
三、模式结构
四、模式分析
1)观察者模式描写叙述了怎样建立对象与对象之间的依赖关系。
2)这一模式中的关键对象是观察目标和观察者。一个目标能够有多个观察者,当观察目标的状态发生变化时。全部的观察者都将得到通知。
3)观察者得到通知后。即时更新自己的状态,与观察目标同步。
五、模式代码
1)抽象目标类
2)详细目标类
3)抽线观察者
4)详细观察者
建立一种对象与对象之间的依赖关系。一个对象发生变化时将自己主动通知其它对象。其它对象将对应做出反应。发生改变的对象称为观察目标,而被通知的对象称为观察者。
二、模式定义
观察者模式(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() { //更新相关的方法 } }
相关文章推荐
- android 01
- 深入浅出: 大小端模式
- WPF开发实例——仿QQ登录界面
- population & sample covariance, standard deviation Aggregate in PostgreSQL
- 简单实现跨域
- 优秀程序员的 18 大法则【转载】
- 继戴尔670亿收购EMC后,科技界钱多的让人窒息的五大收购案
- 《剑指Offer》面试题:约瑟夫环问题
- vbs代码如何使用Wscript调试
- php学习-- 8 异常,生成器
- Qt练习之自定义时钟
- Gradle的简介与安装
- 2015.1014
- thread和runnable
- 深入浅出: 大小端模式
- Android 功能代码总结
- Python学习(二) 正则表达式
- C#using 用法
- 61 Rotate List
- python的range()函数用法