觀察者模式
使用場景
存在一個信息提供方(出版者),多個信息獲取方(訂閱者),獲取方需要實(shí)時獲取提供方的消息,并且能第一時間得到消息更新通知。
設(shè)計(jì)思想
消息獲取方需要在出版者一方進(jìn)行注冊,成為訂閱者,每當(dāng)出版者的信息更新時,出版者會向自己所有的訂閱者發(fā)出通知。
當(dāng)訂閱者不想接受消息時,取消在出版者方的訂閱。
因?yàn)榇a太多, 所以下面的例子都以偽代碼實(shí)現(xiàn)
interface Object {
//注冊訂閱者
void register()
//移除訂閱者
void remove()
//通知訂閱者
void notify()
}
interface Observer {
//更新消息
void update()
}
上述是一個觀察者模式的簡單示例,同時在Java也內(nèi)置了觀察者模式的接口,具體如下:
//出版者(可被觀察者)(class)
//需要注意的是Observable是一個類而不是一個接口
java.util.Observable
//訂閱者(觀察者)(interface)
java.util.Observer