Java观察者模式以及与订阅发布者模式区别

来源:互联网 发布:古天乐整容 知乎 编辑:程序博客网 时间:2024/06/05 00:53

设计模式复习,代码是最好的说明。

定义:观察者模式定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新,属于行为类模式。

注意:观察者模式和发布订阅模式是有区别的,区别在于观察者模式是由目标进行调度,而发布订阅模式是由独立的调度中心进行调度,可以说发布订阅模式是观察者模式进一步解耦,在实际中被大量运用的一种模式。

UML:



代码:

abstract class Subject{    private Vector<Observer> vector = new Vector<Observer>();    public void addObserver(Observer observer){        this.vector.add(observer);    }    public void deleteObserver(Observer observer){        this.vector.remove(observer);    }    protected void notifyObserver(){        for (Observer observer:vector){            observer.update();        }    }    abstract void doSomething();}class ConcreteSubject extends Subject{    void doSomething() {        System.out.println("被观察者事件发生");        this.notifyObserver();    }}interface Observer{    void update();}class ConcreteObserver1 implements Observer{    public void update() {        System.out.println("观察者1收到");    }}class ConcreteObserver2 implements Observer{    public void update() {        System.out.println("观察者2收到");    }}


参考链接

http://blog.csdn.net/itachi85/article/details/50773358

http://www.cnblogs.com/lovesong/p/5272752.html

http://geeksun.iteye.com/blog/2232298

如有错误,欢迎指出!

原创粉丝点击