Android 设计模式之观察者模式
来源:互联网 发布:敷身上的瘦身包 知乎 编辑:程序博客网 时间:2024/04/30 00:15
观察者模式又叫发布-订阅(Publish/Subscribe)模式,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
意 图:
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。
适 用环 境
- 当一个抽象模型有两个方面, 其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。
- 当对一个对象的改变需要同时改变其它对象, 而不知道具体有多少对象有待改变。
- 当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之, 你不希望这些对象是紧密耦合的。
在Android系统中,大量使用了观察者模式来监听数据及设备的变化,如网络服务监听网络状态变化;数据库数据更新的监听。下面是网络服务中使用观察者模式的示例代码:
// 观察者接口 private static class InterfaceObserver extends INetworkManagementEventObserver.Stub { private EthernetDataTracker mTracker; InterfaceObserver(EthernetDataTracker tracker) { super(); mTracker = tracker; } public void interfaceStatusChanged(String iface, boolean up) { Log.d(TAG, "Interface status changed: " + iface + (up ? "up" : "down")); } public void interfaceLinkStateChanged(String iface, boolean up) { if (mIface.equals(iface)) { Log.d(TAG, "Interface " + iface + " link " + (up ? "up" : "down")); mLinkUp = up; mTracker.mNetworkInfo.setIsAvailable(up); // use DHCP if (up) { mTracker.reconnect(); } else { mTracker.disconnect(); } } } public void interfaceAdded(String iface) { mTracker.interfaceAdded(iface); } public void interfaceRemoved(String iface) { mTracker.interfaceRemoved(iface); } public void limitReached(String limitName, String iface) { // Ignored. } public void interfaceClassDataActivityChanged(String label, boolean active) { // Ignored. } } // 创建一个观察者 mInterfaceObserver = new InterfaceObserver(this); // 注册一个观察者 try{ mNMService.registerObserver(mInterfaceObserver); } catch (RemoteException e) { Log.e(TAG, "Could not register InterfaceObserver " + e); }以上代码在frameworks\base\core\java\android\net\EthernetDataTracker.java中,从中可以看出单Ethernet状态发生变化时,观察者能监听到对应的事件并做出相应的处理。
0 0
- Android 设计模式 之 观察者模式
- Android 设计模式 之 观察者模式
- Android 设计模式之观察者模式
- Android 设计模式 之 观察者模式
- android 中的设计模式 之 观察者模式
- Android 设计模式 之 观察者模式
- android设计模式之观察者模式
- Android 设计模式之观察者模式
- Android 设计模式之观察者模式
- android设计模式之观察者模式详解
- android设计模式之--观察者模式
- Android 设计模式 之 观察者模式
- Android 设计模式 之 观察者模式详解
- Android设计模式之观察者模式
- Android设计模式之观察者模式
- Android设计模式学习之观察者模式
- Android 设计模式之观察者模式
- Android设计模式之观察者模式 Observer
- 字符编码笔记:ASCII,Unicode和UTF-8
- Oracle与mysql的区别
- 关于网页中插入iframe中自适应问题的解决
- IOS的学习路线图
- mysql数据库操作语句详解
- Android 设计模式之观察者模式
- Reveal查看任意app的高级技巧
- apache oozie安装试用
- Unity3D的EditorUtility类
- 解决同时运行几个Python程序的问题
- 字典部分习题
- 畅通工程继续(弗洛伊德方式)
- weblogic上部署CXF系统问题服务端
- dialog 例子