Android 設計模式 之 觀察者模式詳解

2021-07-05 21:42:23 字數 1467 閱讀 8657

作為乙隻菜鳥,今天的專案要求用到一堆的設計模式,頓時暈菜,不過還是決定爬起來好好蹂躪它,下面簡單了說說觀察者模式。

先講個小故事。

在某某學校某某班有乙個叫丁香 的女生,她年輕貌美,而且成績好。所以班上的男生都喜歡他,追求者無數。其中有十位小哥便是他的忠實粉絲。

偷偷的說一句,這位丁香姑娘便是「被觀察者」,而這十位小哥便是「觀察者」。

有一天 丁香姑娘 和 她的閨蜜 說了一句 她喜歡吃蘋果,這句話被無時不刻「觀察」著她的一言一行的小哥們聽到了。

於是第二天上課的時候,這位 丁香姑娘的 課桌裡邊 居然藏著 十 個蘋果。

有一天  a小哥實在憋不住和丁香表白了,丁香姑娘 說 那個a小哥漲到很矮,和她絕壁沒有可能在一起。這位小哥聽得很傷心,所以不再追求她。

a小哥同宿舍 的乙個高個子b小哥聽說說了a小哥的故事,覺得自己有可能,就去接近這位姑涼,姑涼說了看表現。

如此,b小哥每天觀察著丁香姑娘需要些什麼,有求必應。

故事講完了,結局是什麼,井方哥就不知道啦。

故事講的不好,大概就是這麼乙個意思。

總結一句話,很多的「觀察者」同時觀察乙個「被觀察者」,被觀察者可以 增加/刪除 每乙個「觀察者」,最重要的就是,「被觀察者」當有新的變化時,會呼叫每乙個「觀察者」更新「被觀察者」的變化的方法。

下面以乙個案列說明,案列參考了網路資源,覺得簡單且說明問題。

public inte***ce watcher

//其次定義乙個介面為:抽象被觀察者

public inte***ce watched

//再次就是定義乙個類為:具體觀察者並實現其介面抽象觀察者

public class concretewatcher implements watcher

}//最後就是定義乙個類為:具體被觀察者並實現其抽象介面抽象被觀察者

public class concretewatched implements watched

public void remove(watcher watcher)

public void notifywatcher(content content) }}

//以物件導向的方式來操作,需要定義乙個實體來進行操作

public class content

public int getid()

public void setname

public string getname()

public void setaddress(string address)

public string getaddress()

}//測試類

public classs test

}

觀察者與被觀察者是乙個多對一的關係,也就是乙個被觀察者可同時被多個觀察者所共同進行關注,當,被觀察者更新時,同時對其觀察者會自動更新其資訊。

Android設計模式之觀察者模式

觀察者模式,是一種非常常見的設計模式,許多系統中隨處可見,尤其是涉及到資料狀態發生變化需要通知的情況下。意圖主要是為了定義物件之間的一種一對多的依賴關係,當這個物件的狀態發生改變時,所有依賴它的物件就會得到通知,並被自動更新。結構 這是乙個簡單的觀察者模式,目標物件可以新增和刪除觀察者,當自己某種狀...

Android設計模式之觀察者模式

所謂的觀察者模式,就是觀察者和被觀察者之間的關係問題。用乙個簡單的生活案例來說明,觀察者是我們訂報紙的人,被觀察者是報紙社,只要我們訂閱了報紙,當有新的新聞出來的時候,報紙社就會印發報紙來通知我。這就是簡單的觀察者模式。author觀察者模式 觀察者模式是一種行為設計模式。觀察者模式的用途是,當你對...

Android 觀察者設計模式

觀察者模式 observer 是軟體設計模式的一種,定義了物件之間一種一對多的關係,也 就是當乙個物件資料發生變化時,會通知與之依賴的其他物件,以相應其資料變化,這種當 目標物件資料發生變化時,與之對應的觀察者物件資料隨之發生變化的,具有一對多通知關 系的設計模式叫做觀察者設計模式.觀察者設計模式中...