Android设计模式之观察者模式.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
/*??*?观察者模式??*定义对象间的一种一个(Subject)对多(Observer)的依赖关系,当一个对象的状态发送改变时,所以依赖于它的??*?对象都得到通知并被自动更新??*???*?当然,MVC只是Observer模式的一个实例。Observer模式要解决的问题为:??*?建立一个一(Subject)对多(Observer)的依赖关系,并且做到当“一”变化的时候,??*?依赖这个“一”的多也能够同步改变。最常见的一个例子就是:对同一组数据进行统计分析时候,??*?我们希望能够提供多种形式的表示(例如以表格进行统计显示、柱状图统计显示、百分比统计显示等)。??*?这些表示都依赖于同一组数据,我们当然需要当数据改变的时候,所有的统计的显示都能够同时改变。??*?Observer模式就是解决了这一个问题。??*???*?适用性:??*??????1.?当一个抽象模型有两个方面,其中一个方面依赖于另一方面??*将这两者封装成独立的对象中以使它们可以各自独立的改变和服用??*???*??????2.?当对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变??*???*??????3.?当一个对象必须通知其它对象,而它又不能假定其它对象是谁??*???*?参与者:??*??????1.?Subject(目标)??*目标知道它的观察者,可以有任意多个观察者观察同一个目标??*提供注册和删除观察者对象的接口??*???*??????2.?Observer(观察者)??*为那些在目标发生改变时需获得通知的对象定义个更新的接口??*???*??????3.?ConcreteSubject(具体目标)??*将有关状态存入各ConcreteObserver对象??*当它的状态发送改变时,向它的各个观察者发出通知??*???*??????4.?ConcreteObserver(具体观察者)??*维护一个指向ConcreteObserver对象的引用??*存储有关状态,这些状态应与目标的状态保持一致??*实现Observer的更新接口是自身状态与目标的状态保持一致??*??*???*?*/?有空我将把UML图补上。下面看看Android使用到的观察者模式.观察者(DataSetObserver),目标(ObservableT),具体目标(DataSetObserverable)Observer(观察者),DataSetObserver抽象2个方法,一个是观察数据改变的方法,一个是观察数据变成无效(或者不可用)时的方法。源码路径:framework/base/core/java/android/database/DataSetObserver.java[java]?/fangchongbory/article/details/7774044view plain/fangchongbory/article/details/7774044copy/fangchongbory/article/details/7774044print/fangchongbory/article/details/7774044?package?android.database;???/**??*?Receives?call?backs?when?a?data?set?has?been?changed,?or?made?invalid.?The?typically?data?sets??*?that?are?observed?are?{@link?Cursor}s?or?{@link?android.widget.Adapter}s.??*?DataSetObserver?must?be?implemented?by?objects?which?are?added?to?a?DataSetObservable.??*/?public?abstract?class?DataSetObserver?{???/**??*?This?method?is?called?when?the?entire?data?set?has?changed,??*?most?likely?through?a?call?to?{@link?Cursor#requery()}?on?a?{@link?Cursor}.??*/??public?void?onChanged()?{???//?Do?nothing??}????/**??*?This?method?is?called?when?the?entire?data?becomes?invalid,??*?most?likely?through?a?call?to?{@link?Cursor#deactivate()}?or?{@l

文档评论(0)

dashewan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档