观察者模式

来源:互联网 发布:php smarty 编辑:程序博客网 时间:2024/06/07 23:35

1.观察者模式observe

使用java自带的观察者模式


observer模式的UML图

1.//被观察者:ServerManagerpublic class ServerManager extends Observable {    private int data = 0;    public int getData() {        return data;    }    public void setData(int i) {        if (this.data != i) {            this.data = i;            setChanged();        }        notifyObservers();  //只有在setChange()被调用后,notifyObservers()才会去调用update(),否则什么都不干。    }}2.//观察者一:AObserverpublic class AObserver implements Observer {    public AObserver(ServerManager sm) {        super();        // TODO Auto-generated constructor stub        sm.addObserver(this);//注册加入观察者    }    public void update(Observable arg0, Object arg1) {        System.out.println("AObserver receive:Data has changed to " + ((ServerManager) arg0).getData());    }}3.//观察者二:BObserverpublic class BObserver implements Observer {    public BObserver(ServerManager sm) {        super();        sm.addObserver(this);//注册加入观察者    }    public void update(Observable o, Object arg) {        // TODO Auto-generated method stub        System.out.println("BObserver receive:Data has changed to " + ((ServerManager) o).getData());    }}4.public class TestDemo {    public static void main(String[] args) {        // TODO Auto-generated method stub        ServerManager sm = new ServerManager();        AObserver a = new AObserver(sm);        BObserver b = new BObserver(sm);//        sm.setData(5);//        sm.deleteObserver(a);//注销观察者,以后被观察者有数据变化就不再通知这个已注销的观察者        sm.setData(10);    }}