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
如有错误,欢迎指出!
定义:观察者模式定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新,属于行为类模式。
注意:观察者模式和发布订阅模式是有区别的,区别在于观察者模式是由目标进行调度,而发布订阅模式是由独立的调度中心进行调度,可以说发布订阅模式是观察者模式进一步解耦,在实际中被大量运用的一种模式。
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
如有错误,欢迎指出!
相关文章推荐
- java中代理模式以及new和newInatance()的区别
- Java的回调函数和观察者模式的区别
- 【GOF23设计模式】_观察者模式_广播机制_消息订阅_网络游戏对战原理_自带类与接口JAVA251-252
- 观察者模式和发布/订阅模式的区别
- Java设计模式:观察者模式以及Servlet中的Listener
- java中代理模式以及new和newInatance()的区别
- 【 应用以及剖析】之 java.util.Observer 观察者模式实现
- 设计模式(三):观察者模式与发布/订阅模式区别
- 观察者模式(Observer)和发布(Publish/订阅模式(Subscribe)的区别
- Java动态代理模式jdk和cglib的2种实现以及二者的区别(AOP面向切面的前奏)
- Java设计模式之观察者模式(发布/订阅模式)
- c# 委托 事件 EventHandler 观察者模式 详解,以及和java的比较
- 观察者模式和发布/订阅模式的区别
- 观察者模式与发布/订阅模式区别
- 观察者模式与发布/订阅模式区别
- 专治Java集合面试回答以及观察者模式解读
- java模式之策略模式&模板模式 以及策略模式与模板模式的区别
- java的观察者模式(有点监听器的感觉),Thread和Runnable的区别
- Java的回调函数和观察者模式的区别
- notifyDataSetChanged和notifyDataSetInvalidated区别以及观察者模式的使用