話說現(xiàn)在的年輕人,很多人每天最困難的的問題是下一頓什么,在哪里吃。作為一個苦逼上班族,食堂飯菜實在是吃膩了。于是乎,今天和一個同事上午不約而同叫了同一家外賣,到了中午吃飯的時間,快遞小哥準(zhǔn)時送來,我難得吃到了一點跟平常不一樣的口味。我表示現(xiàn)在還在心疼自己的錢包...
進(jìn)入正題
觀察者模式概述
觀察者模式定義了一種一對多的依賴關(guān)系,讓多個觀察者對象同時監(jiān)聽某一個主題對象。這個主題對象在狀態(tài)發(fā)生變化時,會通知所有觀察者對象,使它們能夠自動更新自己。好吧,這個概念這沒什么意思,網(wǎng)上一搜一大把,都大同小異,不多說了。
觀察者模式的模型
抽象主題(Subject)角色:抽象主題角色把所有對觀察者對象的引用保存在一個聚集(比如ArrayList對象)里,每個主題都可以有任何數(shù)量的觀察者。抽象主題提供一個接口,可以增加和刪除觀察者對象,抽象主題角色又叫做抽象被觀察者(Observable)角色。
具體主題(ConcreteSubject)角色:將有關(guān)狀態(tài)存入具體觀察者對象;在具體主題的內(nèi)部狀態(tài)改變時,給所有登記過的觀察者發(fā)出通知。具體主題角色又叫做具體被觀察者(Concrete Observable)角色。
抽象觀察者(Observer)角色:為所有的具體觀察者定義一個接口,在得到主題的通知時更新自己,這個接口叫做更新接口。
具體觀察者(Con