首先來看看觀察者模式的概念:
定義對象間的一種一對多的依賴關(guān)系宏赘,當一個對象的狀態(tài)發(fā)送改變時籍琳,所有依賴于它的對象都能得到通知并被自動更新
第一句可能不太懂傻盟,但是后面的容易懂司恳,就像天氣預報一樣柿赊,只要你訂閱了俩功,他就會發(fā)短信更新通知你說天氣變化了。這就是觀察者碰声。
觀察者模式的成員:
1)诡蜓、觀察者。我們稱之為Observer胰挑, 有時候我們也成他為訂閱者蔓罚,即Subscriber.
2)椿肩、被觀察者:我們稱之為Observable,即可用被觀察的東西,有時候會成為主題豺谈,Subject
三部曲:
1郑象、創(chuàng)建被觀察者:注冊(訂閱),注銷(取消訂閱)茬末, 更新數(shù)據(jù)(Observable)
2厂榛、觀察者:即Observer也叫Subscriber,在rxjava中Subscriber只是比Observer多了幾個方法相對功能強大點
3丽惭、訂閱击奶、
二责掏、在Android中的觀察者:
1)正歼、最簡單的按鈕點擊事件(Button)
Button btn = new Button(this);
btn.setOnClickListener(new View.OnClickListener()){
? ? ? public void onClick(View v){?
? ? ? ? ? ?Log.e("Tag", "click");
? ? ? }
}
2)、RecycleView中的addOnScrollListener方法:滾動監(jiān)聽
3)拷橘、Android中自帶的廣播,廣播通過registerReceiver注冊廣播喜爷,通過unregisterReceiver注銷廣播冗疮,通過sendBroadcast發(fā)送廣播。這就是典型的觀察者模式檩帐,
4)术幔、開源框架EventBus也是基于觀察者模式,觀察者模式的三個典型湃密,注冊诅挑、取消注冊,發(fā)送事件泛源。
6)拔妥、當然最重量級的還是現(xiàn)在火熱的RXjava,這個也是基于觀察者模式。
①达箍、創(chuàng)建被觀察者:
②没龙、觀察者、即訂閱者
③缎玫、觀察者進行事件的訂閱(被觀察者訂閱觀察者)
具體的RXjava詳解請查看這里Rxjava詳細解析
支持原文創(chuàng)作:觀察者模式