Android設計模式 觀察者模式

2021-07-31 14:07:31 字數 2229 閱讀 2414

觀察者模式又叫訂閱—發布模式,它的主要作用就是解耦,將觀察者和被觀察者解耦,使它們的依賴性變的更小。在這個模式中主要就是被觀察者通知所有觀察者發生改變,及時的更新。listview的notifydatasetchanged()改變介面、broadcastrecevier也是運用此設計模式。

角色介紹

subject:抽象主題,被觀察者(observable)的角色,抽象主題角色把所有觀察者物件的引用儲存在乙個集合裡,每個主題都可以有任意數量的觀擦者,抽象主題提供乙個介面,可以增加、刪除觀察者物件。

concretesubject:具體主題,該角色將有關狀態存入具體觀察者物件,在具體主題的內部狀態發生改變時,給所有註冊過的觀察者發出通知,具體主題角色又叫具體被觀察者(concreteobservable)角色。

observer:抽象觀察者,該角色是觀察者的抽象類,它定義了乙個更新介面,使得在得到主題的更改通知時更新自己。

concreteobservre:具體的觀察者,該角色實現抽象觀察者所定義的更新介面,以便在主題的轉態發生變化時更新自己的狀態。

下面我們來實現乙個例子

抽象觀察者

當被觀察者發生變化時,觀察者進行的行為動作,提供乙個統一的方法名便於被呼叫,引數自己定義

/**

* created by fhm on 2017/5/4.

* 觀察者的介面

*/public

inte***ce

observer

具體的觀察者

/****

* ** ***/

public

class

obseractivity

extends

implements

observer

public

void

initreceiver()

@override

public

void

action(context context, object... objects)

@override

protected

void

ondestroy()

}

抽象的被觀察者

/**

* created by fhm on 2017/5/3.

* 被觀察者物件

* * @param

*/public abstract

class

observable

/**

* 登出觀察者

** @param t

*/public void unrristerobserver(t t)

/*** 判斷所傳的觀察者是否為空

*/private void checknull(t t)

}/***

* 通知觀察者做出行為改變

***/

public abstract void notifyobservers(object... objects);

}

具體的被觀察者

/**

* created by fhm on 2017/5/4.

* 被觀察者物件

*/public class

alarmobservable

extends

observable

public static alarmobservable getinstance(context mcontext)

return malarmobservable;

}@override

public void notifyobservers(object... objects) }}

}

提醒觀察者更新

public

class

observableactivity

extends

activity

}

一步一步的,觀察者模式大致就是這個樣子,需要自己好好去理解這個思想。

但是,到真正專案的使用的時候,建議使用別人開發的輪子。例如:eventbus和otto。

有興趣的可以看看eventbus的使用。

eventbus使用詳解(一)——初步使用eventbus

Android 觀察者設計模式

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

Android設計模式 觀察者模式

觀察者模式是乙個使用頻率非常高的模式,他最常用的地方是gui系統和訂閱 發布系統。該模式的最重要的作用就是解耦,使觀察者和被觀察者之間依賴盡可能小,甚至好無依賴。定義物件間一種一對多的關係,使得每當乙個物件改版狀態,所有依賴它的物件都會得到通知並更新。如圖 1.事件多級觸發場景 2.關聯行為場景 3...

python 設計模式 觀察者 觀察者設計模式

在觀察者設計模式這種模式中,物件被表示為等待事件觸發的觀察者。一旦發生指定的事件,觀察者就會關注該主體。當事件發生時,主體告訴觀察者它已經發生。以下uml圖表示觀察者模式 如何實現觀察者模式?現在讓我們來看看如何實現觀察者模式。參考以下實現 import threading import time ...