观察者模式的在线和离线应用

eastwake 发布于 2013/03/16 19:41
阅读 250
收藏 2
观察者模式是最基本的设计模式之一,用于解耦一对多的通信。其实很多人都只知道它的第一种模式,也就是最典型的在线模式:subject存储了多个观察者的实例引用,当事件触发时,通过回调来通知观察者。java中的listener,android中的listener等均如此。之所以称为在线(online),那是由于通知是基于引用的实例,所以只有当观察者的实例存在时(online),通知才是有效的。显然,在线模式只能工作于客户的生命周期内,客户非激活状态下的通知是无法实现的。 但是,实际世界中,很多移动平台中都是需要离线通知这样一种机制,即,既希望可以被通知,不错过通知,又由于某些限制而不能让客户端实例一直激活(如耗电,耗内存等)。 一个典型的例子,闹铃提醒应用,就是典型的离线需求。 离线通知的典型实现是基于event而非基于回调引用,从而不和观察者的实例(生命周期)绑定。此时,观察者注册时,典型的是注册一份契约(通常是字符串,比如url,mime type,scheme等等),而非观察者本身。然后观察者对外宣布支持这份契约(比如通过manifest类似的组件申明文件)。运行时,事件发生时,subject简单的委托系统去通知对当前事件感兴趣的客户。系统启动时,已经完成了组件的注册,使得组件类和契约绑定。那么,系统就可以方便的找到申明对某某事件感兴趣的契约,从而找到组件类,然后加载并实例化它,并调用它的某个预定义的api来处理该通知。android中的broadcast receiver和pendingintent,brew中的registernotify都是离线通知的典型例子。
加载中
0
StormFour
StormFour
这都讲的什么东西,估计楼主自己都看不懂吧
0
e
eastwake
笑而不答
返回顶部
顶部