您的位置:首页 > 编程语言 > Java开发

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

2017-09-28 16:15 393 查看
设计模式复习,代码是最好的说明。

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

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

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
如有错误,欢迎指出!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息