设计模式之观察者模式

定义

Define a one-to-many dependency between objects so that when one object changes state,all its dependents are notified and updated automatically.(定义对象间一种一对多的依赖关系,使得每 当一个对象改变状态,则全部依赖于它的对象都会获得通知并被自动更新。)java

类图

角色

  • Subject 被观察者接口,定义添加观察者,减小观察者,通知观察者的方法。
  • ConcreateSubject 被观察者实现类,实现观察者接口的方法,在适当业务场景代码中调用notify来通知观察者。

其中notify的代码如:多线程

private List<Observer> obsList = new CopyOnWriteArrayList<>();
//通知全部观察者
public void notify(){
	for(Observer o:this.obsList){
	o.update();
	}
}
  • Observer 观察者接口,定义收到信息后的处理方法update。
  • ConcreateObserver 观察者实现类,实现update方法。

高级应用

  • 这种在JDK中已经实现了一套如java.util.Observable实现类和java.util.Observer接口
  • 上述的例子中通知多个观察者是采用的循环中顺序执行的方法,在这种状况下,一个观察者若是效率很是慢,将影响其余观察者的处理进度,因此能够采起队列+多线程的方式进行处理。
  • 消息中的发布订阅就是观察者模式的高级应用
相关文章
相关标签/搜索