Java设计模式—— 观察者模式
2016-07-26 15:59
204 查看
基本概念:
观察者模式属于行为型模式,其意图是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
这一个模式的关键对象是目标(Subject)和观察者(Observer)。一个目标可以有任意数目的依赖它的观察者,一旦目标的状态发生改变,所有的观察者都得到通知,作为对这个通知的响应,每个观察者都将查询目标以使其状态与目标的状态同步。
适用场景:
观察者模式,用于存在一对多依赖关系的对象间,当被依赖者变化时,通知依赖者全部进行更新。因此,被依赖者,应该有添加/删除依赖者的方法,且可以将添加的依赖者放到一个容器中;且有一个方法去通知依赖者进行更新。
比如,大家P进电影院看电影,电影M为被观察者,
接口 P{
Begin()
}
A某
B某
C某
被观察者
电影
被观察者承担管理观察者和通知观察者的职责,当电影开始过后就通知观众
观察者模式属于行为型模式,其意图是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
这一个模式的关键对象是目标(Subject)和观察者(Observer)。一个目标可以有任意数目的依赖它的观察者,一旦目标的状态发生改变,所有的观察者都得到通知,作为对这个通知的响应,每个观察者都将查询目标以使其状态与目标的状态同步。
适用场景:
观察者模式,用于存在一对多依赖关系的对象间,当被依赖者变化时,通知依赖者全部进行更新。因此,被依赖者,应该有添加/删除依赖者的方法,且可以将添加的依赖者放到一个容器中;且有一个方法去通知依赖者进行更新。
比如,大家P进电影院看电影,电影M为被观察者,
接口 P{
Begin()
}
A某
A implement P{ Begin{ “哈哈” } }
B某
B implement P{ Begin{ “哈哈哈哈” } }
C某
C implement P{ Begin{ “哈哈哈哈哈哈” } }
被观察者
interface B{ 建立一个注册观察者对象的接口; public void a(P o); 建立一个删除观察者对象的接口; public void d(P o); 建立一个当目标状态发生改变时,发布通知给观察者对象的接口; public void n(); }
电影
被观察者承担管理观察者和通知观察者的职责,当电影开始过后就通知观众
M implement B{ Vector v; public M(Vector v) { this.v=v; } public void a(Observer o) { v.add(0); } public void d(Observer o) { v.remove(0); } public void notice(){ for(int i=0;i<v.sise();i++) { v.get(i).Begin() } } }
Vector v=new vector() v.a(A); v.a(B); v.a(C); M m=new M(v); m.notice();
相关文章推荐
- spring-boot-mybatis 学习资料整理
- RX的使用一:RXjava初级入门
- Java学习之Iterator(迭代器)的一般用法
- 匿名内部类
- springmvc乱码
- Spring中创建bean的三种方式
- myeclipse2014快捷功能之tostring
- springmvc 上传文件
- Java中的线程Thread总结
- Java数据持久层框架 MyBatis之API学习三(XML 映射配置文件)
- java设计模式——组合模式
- Java 的swing.GroupLayout布局管理器的使用方法和实例
- Webstorm切换快捷键风格(Webstorm快捷键与eclipse对比介绍)
- springmvc路由访问及数据传递
- eclipse 断点调试
- javaweb学习总结(六)——Servlet开发(二)
- Java设计模式——外观模式
- Java内存分配策略与垃圾收集器
- Eclipse小技巧备忘
- Ubuntu16.04安装配置Eclipse 以及opencv的使用