Java_观察者模式(Observable和Observer)
来源:互联网 发布:华信软件学院 编辑:程序博客网 时间:2024/05/21 09:11
参考链接: http://blog.csdn.net/tianjf0514/article/details/7475164/
参考链接:https://my.oschina.net/bairrfhoinn/blog/177173?p={{currentPage+1}}
在Java中通过Observable类和Observer接口实现了观察者模式。一个Observer对象监视着一个Observable对象的变化,当Observable对象发生变化时,Observer得到通知,就可以进行相应的工作。
如果画面A是显示数据库里面的数据,而画面B修改了数据库里面的数据,那么这时候画面A就要重新Load。这时候就可以用到观察者模式。
SimpleObservable
package com.eastcom.first.spark.data.observer;import java.util.Observable;public class SimpleObservable extends Observable {private int data = 0;public int getData() {return data;}public void setData(int i) {if (this.data != i) {this.data = i;setChanged();// 只有在setChange()被调用后,notifyObservers()才会去调用update(),否则什么都不干。notifyObservers();}}}SimpleObserverpackage com.eastcom.first.spark.data.observer;import java.util.Observable;import java.util.Observer;public class SimpleObserver implements Observer {public SimpleObserver(SimpleObservable simpleObservable) {simpleObservable.addObserver(this);}@Overridepublic void update(Observable o, Object data) {// TODO Auto-generated method stubSystem.out.println("Data has changed to" + ((SimpleObservable) o).getData());}}
SimpleTestpackage com.eastcom.first.spark.data.observer;public class SimpleTest {public static void main(String[] args) {SimpleObservable doc = new SimpleObservable();SimpleObserver view1 = new SimpleObserver(doc);SimpleObserver view2 = new SimpleObserver(doc);SimpleObserver view3 = new SimpleObserver(doc);doc.setData(1);doc.setData(2);doc.setData(2);doc.setData(3);doc.deleteObserver(view2);System.out.println("===================");doc.setData(1);doc.setData(2);doc.setData(2);doc.setData(3);}}
运行结果Data has changed to1Data has changed to1Data has changed to1Data has changed to2Data has changed to2Data has changed to2Data has changed to3Data has changed to3Data has changed to3===================Data has changed to1Data has changed to1Data has changed to2Data has changed to2Data has changed to3Data has changed to3
对应一个类,既是观察者同时也是被观察者。具体实例如下:
ObserverA
package com.eastcom.first.spark.data.observer;import java.util.Observable;import java.util.Observer;public class ObserverA extends Observable implements Observer {@Overridepublic void update(Observable o, Object arg) {// TODO Auto-generated method stubObserverB observerB = (ObserverB) o;System.out.println("observerB changed, the new value of observerB.data is " + observerB.data);this.setChanged();this.notifyObservers();}}ObserverB
package com.eastcom.first.spark.data.observer;import java.util.Observable;import java.util.Observer;public class ObserverB extends Observable implements Observer {int data = 0;@Overridepublic void update(Observable object, Object arg) {System.out.println("ObserverB found that ObserverA changed...");}public void setData(int data) {this.data = data;this.setChanged();this.notifyObservers();}}ObserverClient
package com.eastcom.first.spark.data.observer;public class ObserverClient {public static void main(String[] args) {ObserverA a = new ObserverA();ObserverB b = new ObserverB();a.addObserver(b);b.addObserver(a);b.setData(2);}}运行结果:
observerB changed, the new value of observerB.data is 2ObserverB found that ObserverA changed...
阅读全文
0 0
- Java_观察者模式(Observable和Observer)
- Java_观察者模式(Observable和Observer)
- Java_观察者模式(Observable和Observer)
- Java_观察者模式(Observable和Observer)
- Java_观察者模式(Observable和Observer)
- 观察者模式(Observer、Observable)
- 观察者模式(基于Observable 类和Observer 接口)
- java observer和observable 实现观察者模式
- 观察者模式-java 内置 Observable 和 Observer
- 浅谈 Observable和Observer 观察者模式
- 十一、观察者模式(Observable、Observer)
- Observable与Observer (观察者模式)
- Java观察者模式 : Observer / Observable
- java 观察者模式Observable Observer
- JAVA 观察者设计模式 Observable类 和 Observer接口
- javaSE观察者模式Observer和Observable--相关api的翻译
- 通过Observable类和Observer接口实现观察者设计模式
- 观察者设计模式-Observable类和Observer接口
- 安卓开发下载图片保存到手机后图片没在相册看到的问题
- java8 Spliterator接口API翻译
- 添加一个新的HMD到OSVR
- Dubbo教程(一)----Dubbo框架简介
- hdu 4841 圆桌问题
- Java_观察者模式(Observable和Observer)
- 获取手机通讯录以及添加联系人
- dyld: lazy symbol binding failed: Symbol not found: _clock_gettime
- JAVAWEB开发之Solr的入门——Solr的简介以及简单配置和使用、solrJ的使用、Solr数据同步插件
- HDU
- spring boot整合redis(单机+集群)
- R中时间序列分析-趋势预测ARIMA
- SQL之case when then else end用法
- vuex学习七----Modules