[设计模式]NetworkManagementService中的观察者模式

观察者模式

观察者模式有如下角色

(1)被观察者(Subject)

(2)观察者(Observer)

[设计模式]NetworkManagementService中的观察者模式_第1张图片

public class Subject{
	private:
		list mObservers;
protect:
	void onChange(){
		for(int i=0; i

 

如下为NetworkManagementService中的注册观察者的函数(regisrterObserver)和通知观察者的函数(notifyInterfaceStatusChanged),其实在NetworkManagementService中还有很多类型的通知函数,通知变动的内容如下:

InterfaceStatus

InterfaceLinkState

InterfaceAdded

InterfaceRemoved

LimitReached

InterfaceClassActivity

[设计模式]NetworkManagementService中的观察者模式_第2张图片

在NetworkManagementService中观察者是INetworkManagementEventObserver类型,在INetworkManagementEventObserver.aidl

NetworkManagementService中的观察者模式则更为简单,如下:

[设计模式]NetworkManagementService中的观察者模式_第3张图片

观察者与被观察者的子类之间没有相互依赖关系。如果加上mDataActivityObserver 的幕后操纵者ConnectivityService,结构如下:

[设计模式]NetworkManagementService中的观察者模式_第4张图片

其实在ConnectivityService中除了mDataActivityObserver作为观察者,还有mTethering也作为观察者注册到NetworkManagemanetService中。

[设计模式]NetworkManagementService中的观察者模式_第5张图片

此外除了ConnectivityService还有NetworkPolicyManagerService也有向NetworkMangementService派遣观察者。这种设计真的太妙了。

(版权所有,转载请告知)

转载于:https://www.cnblogs.com/claruarius/p/5785813.html

你可能感兴趣的:([设计模式]NetworkManagementService中的观察者模式)