1.什么是观察者模式
观察者模式是软件设计模式的一种。在此种模式中,一个目标对象管理所有相依于它的观察者对象,
并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式
通常被用来实时事件处理系统。
2.java如何实现观察者模式
java通过 类java.util.Observable 和 接口 java.util.Observer 实现该模式。(不得不吐槽一下,sun公司真的土掉渣了,
类的名字以able结束,接口反而不用) 被观察者继承Observable 观察者实现Observer接口。下面看例子:
//被观察者
public class TObservable extends Observable {
private int data;
public void setDate(int data){
this.data =data;
this.setChanged();
this.notifyObservers();
}
public Integer getData(){
return data;
}
}
/**
* 观察者
* @author
*/
public class TObserver implements java.util.Observer{
//观察者实现 update方法
@Override
public void update(Observable o, Object arg) {
TObservable observable = (TObservable) o;
System.out.println("TObservable.date is exchange:"+observable.getData());
}
}
//测试
public static void main(String[] args) {
//实例化被观察者
TObservable impl = new TObservable();
//添加观察者,可以添加多个观察者
impl.addObserver(new TObserver());
//被观察者发生改变
impl.setDate(12);
impl.setDate(13);
}
3.使用Observer和Observable 观察者与被观察者是同一对象
//example
public class TOObs extends Observable implements Observer {
private int data;
public void setData(int data){
this.data =data;
this.setChanged();
this.notifyObservers();
}
public Integer getData(){
return this.data;
}
@Override
public void update(Observable o, Object arg) {
TOObs toobs = (TOObs)o;
System.out.println("exchanges"+toobs.getData());
}
//测试
TOObs toobs = new TOObs();
toobs.addObserver(toobs);
toobs.setData(11);
toobs.setData(11);