浅谈 Observable和Observer 观察者模式

来源:互联网 发布:苹果mac好用吗 编辑:程序博客网 时间:2024/04/30 14:09

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方法@Overridepublic 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 观察者与被观察者是同一对象

//examplepublic 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;}@Overridepublic 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);





0 0
原创粉丝点击