观察者模式

来源:互联网 发布:jquery 遍历数组对象 编辑:程序博客网 时间:2024/05/01 21:36

java 提供Observable 抽象类和observer接口为开发者实现观察者模式提供便利,下面是一个例子。

观察者

import java.util.*;public class myobserver implements Observer{    private int id;    private static int count=0;    public myobserver(Observable observable)    {       //观察者将自己注册到被观察者       observable.addObserver(this);           id=count++;    }    @Override    public void update(Observable o, Object arg) {        // TODO Auto-generated method stub        System.out.println("观察者"+id+"观察到的数据:"+((myobservable) o).getVar());    }}

被观察者

import java.util.*;public class myobservable extends Observable{    private int var;//观察者需要观察的数据    public int getVar() {        return var;    }    public void setVar(int var) {        this.var = var;        this.setChanged();//标记被观察者状态已改变        this.notifyObservers();//内部会调用observer的update()方法    }  public static void main(String[]  args)     {        myobservable observable=new myobservable();        new myobserver(observable);        new myobserver(observable);        new myobserver(observable);        observable.setVar(2);        observable.setVar(-9);    }}

结果

观察者2观察到的数据:2
观察者1观察到的数据:2
观察者0观察到的数据:2
观察者2观察到的数据:-9
观察者1观察到的数据:-9
观察者0观察到的数据:-9

0 0