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