觀察者模式在生活中十分常見,舉個最簡單的例子,我們帶的智慧型手錶,當你有鬧鐘,**或者簡訊來的時候,就震你。
對於手錶來說,你是觀察者,手錶是被觀察者。
那麼手錶提醒你這個功能是如何實現的呢?
1.手錶戴在你手上
2.手錶有事件發生了(比如鬧鐘時間到了吧)
3.你注意到手錶的震動
在寫程式的時候,我們把手錶封裝成乙個類,人封裝成乙個類。那麼,手錶類要有兩個方法,佩戴方法和震動方法。
佩戴方法完成手錶與人(的手腕)的繫結,震動方法完成手錶通過震動觸發人的感覺功能,讓人覺察。
人這個類要有感覺方法。
橘子牌手錶類
某王老弟類
場景類
輸出為:感覺到了強力震動
如果今天是周五,小王想摘掉手錶,不讓他提醒自己,應該怎麼做呢?
本例為最簡單的觀察者模式,觀察者模式又稱訂閱-發布模式,更像日常生活中的對講機。
如果調到某一頻段(訂閱),那麼這個頻段的內容就能夠接收到(發布),允許很多個觀察者註冊進來。
生活中的設計模式 觀察者模式
之前的qq客戶端是不允許多個客戶端同時登入的,後來才有的多客戶端登入 涉及到notify那麼之前必然有乙個註冊和取消註冊觀察者的過程 這兩個過程應該對應著我們登入qq和退出登入操作 這樣每次登入的時候就會在服務端observer容器裡加上當前這個客戶端,如果退出登入就會刪去當前這個觀察者 那麼問題就...
設計模式之觀察者模式
首先說了乙個自己的小例子吧,前兩天我的乙個朋友來找我玩,因為路途比較遠,我需要知道他的位置,然後安排好時間去接他,那麼在這個例子中,我就是乙個觀察者,需要時時刻刻觀察他的位置,我的朋友就是乙個被觀察者。那麼需要知道我朋友的位置,就有兩種方式,第一,我自己打 問,第二,我的朋友告訴我,下面我們來看看這...
設計模式之觀察者模式
一 作用 讓多個觀察者監視某一物件的變化,如果物件變化,則通知所有觀察者。二 例子 抽象主題類 public abstract class subject 移除觀察者 public void detach observer observer 向觀察者 們 發出通知 public void notif...