java觀察者模式:[1]java設計模式?

因為java語言在對於事件處理方面上有相對的弱勢,他沒有辦法捕捉到事件的變化,偵聽事件的變化來做響應的邏輯處理(java swing除外),帶給我們很多不便.觀察者模式是一個很少的解決這種弊端的一個模式,當有物件的屬性或者方法變化是,能夠通知被觀察者.

工具/原料

java基礎

方法/步驟

觀察者模式是怎麼樣的執行流程呢?

通俗的將就是:我們可以理解為情報工作人員,打聽到地特務的情報,需要及時將情報傳遞出去.這裡面的觀察者就是潛伏人員,被觀察者就是特務,他們的一舉一動都要想報告.如圖所示:

java觀察者模式:[1]java設計模式

被觀察者類的定義

首先需要定義一個統一的介面.為什麼定義呢?

通俗點的說:一般情況下沒有實力的人員是不會打進敵人內容,並且潛伏下來的.這樣子大家就比較容易理解.我們允許你們觀察我,但不是每一個人都能隨便觀察者的. 這樣子我們就需要過濾,那麼就需要定義個介面,什麼樣的資料才能進入:

addobserable deleteobserved notifyobser 新增,刪除的是要要及時通知觀察者.

介面跟具體類的定義如圖所示:

java觀察者模式:[1]java設計模式

java觀察者模式:[1]java設計模式

觀察者的類的定義

同樣我們也需要首先定義一個共有的接口出來,因為觀察者有好多種,舉個例子:敵人也有情報人員,八路也有...我們需要同一個介面,那就是什麼樣資料格式抽象出來.不然的話,沒有一個共性,我們是沒辦法來定義觀察者類的.這就用到我們前面的文章,類的定義,及其介面的定義.

什麼共性呢?

那就是對方資料的變化,或者狀態的變化這些東西是我們非常關注的.因此我們介面中可以定義一個更新的方法:如圖所示:

java觀察者模式:[1]java設計模式

java觀察者模式:[1]java設計模式

測試內:我們需要模擬我們例項中定義的哪幾種角色,並對其進行測試,看是否符合我們的設計目的.

java觀察者模式:[1]java設計模式

設計模式是建立在基礎知識上的,只有很好的掌握住基礎知識,才能設計出健壯的程式碼.不建議一開始就學習設計模式.

模式, 觀察者, 設計模式,
相關問題答案