观察者设计模式

使用场景:java

  • 作监听,购票后发短信、记日志、作发布-订阅、赠券

################################大数据

观察者模式是对象的行为模式spa

  • 又叫发布-订阅(Publish/Subscribe)模式、
  • 模型-视图(Model/View)模式
  • 源-监听器(Source/Listener)模式或从属者(Dependents)模式

推模型和拉模型

推模型3d

  • 主题对象向观察者推送主题的详细信息,无论观察者是否须要,推送的信息一般是主题对象的所有或部分数据

拉模型日志

  • 主题对象在通知观察者的时候,只传递少许信息
  • 若是观察者须要更具体的信息,由观察者主动到主题对象中获取,至关因而观察者从主题对象中拉数据

两种模式的比较

  • 推模型是假定主题对象知道观察者须要的数据;而拉模型是主题对象不知道观察者具体须要什么数据,没有办法的状况下,干脆把自身传递给观察者,让观察者本身去按须要取值
  • 推模型可能会使得观察者对象难以复用,由于观察者的update()方法是按须要定义的参数,可能没法兼顾没有考虑到的使用状况;这就意味着出现新状况的时候,就可能提供新的update()方法,或者是干脆从新实现观察者;而拉模型就不会形成这样的状况,由于拉模型下,update()方法的参数是主题对象自己,这基本上是主题对象能传递的最大数据集合了,基本上能够适应各类状况的须要

JAVA提供的对观察者模式的支持

  • 在JAVA语言的java.util库里面,提供了一个Observable类以及一个Observer接口,构成JAVA语言对观察者模式的支持
  • 这个类表明一个被观察者对象,有时称之为主题对象。一个被观察者对象能够有数个观察者对象,每一个观察者对象都是实现Observer接口的对象
  • 使用时能够分别扩展,Observable类以及Observer接口,建立Watcher对象和 Watched对象
相关文章
相关标签/搜索