观察者模式
使用场景
存在一个信息提供方(出版者),多个信息获取方(订阅者),获取方需要实时获取提供方的消息,并且能第一时间得到消息更新通知。
设计思想
消息获取方需要在出版者一方进行注册,成为订阅者,每当出版者的信息更新时,出版者会向自己所有的订阅者发出通知。
当订阅者不想接受消息时,取消在出版者方的订阅。
因为代码太多, 所以下面的例子都以伪代码实现
interface Object {
//注册订阅者
void register()
//移除订阅者
void remove()
//通知订阅者
void notify()
}
interface Observer {
//更新消息
void update()
}
上述是一个观察者模式的简单示例,同时在Java也内置了观察者模式的接口,具体如下:
//出版者(可被观察者)(class)
//需要注意的是Observable是一个类而不是一个接口
java.util.Observable
//订阅者(观察者)(interface)
java.util.Observer