記一次觀察者模式的使用

2021-09-05 11:16:28 字數 1963 閱讀 3834

一、引入:

資料同步

把問題簡化為下面7個類:

需求:資料在songsubject中的改變,可以通知三個觀察者,並同時更新資料

問題抽離

二、觀察者模式:

一對多--一人提供資訊(subject),多人需求資訊(observer),資訊體(t)

t發生改變時,由subject統一提醒observer

1.介面層:observer介面:(觀察者)
public inte***ce observer
2.介面層:subject介面:(被觀察者)
public inte***ce subject
3.資訊體(song)
public class song 

//set、get、tostring省略...

}

4.資訊提供者(被觀察者實現類):
public class songsubject implements subject

@override

public void detach(observerobserver)

@override

public void notifyobserver()

}/**

* 設定資訊--通知所有觀察者

* @param song

*/public void setsong(song song)

}

5.pop觀察者實現類
/**

* 說明:觀察者:pop

*/public class poppager implements observer

}

6.fragment觀察者實現類
/**

* 說明:觀察者:fragment

*/public class homelistfragment implements observer

}

7.主頁面觀察者實現類
主要繫結邏輯在模仿的oncreate裡,當然mpv裡,你可以根據實際情況

/**

* 說明:觀察者:activity

*/public class homeactivity implements observer

}, 0, 1000);

}@override

public void update(song song)

}

8.啟動類:
public class boot 

}

三、觀察者模式分析

1.執行結果如下圖

結果.gif

2.分析:

單看結果好像並沒有什麼特色,但是請注意:

每次的印的三條資料分別**於三個不同的類

當你在update方法裡用song物件控制檢視顯示時,只需要讓被觀察者更新資料就行了

三個介面的資訊會同步變化,這就是觀察者模式優秀的地方

畢竟實際中pop彈框,activity,fragement分屬不同類,能夠這樣統一變化會減少耦合

3.小結

記一次觀察者模式的使用

一 引入 把問題簡化為下面7個類 需求 資料在songsubject中的改變,可以通知三個觀察者,並同時更新資料 二 觀察者模式 一對多 一人提供資訊 subject 多人需求資訊 observer 資訊體 t t發生改變時,由subject統一提醒observer 1.介面層 observer介面...

ios 使用觀察者模式

觀察者模式 在cocoa touch框架中,觀察者模式的具體應用有兩個 通知機制 notification 機制和kvo key value observing 機制 通知機制 通知機制和委託模式不同的是,前者是 一對多 的物件之間的通訊,後者是 一對一 的物件之間的通訊 通知主要有三種 廣播通知 ...

觀察者模式的熟練使用

header content type text html charset utf 8 定義觀察者 被觀察者介面 inte ce iticketobserver 觀察者介面 inte ce iticketobservable 被觀察物件介面 主題類實現 class hipiaobuy impleme...