zoukankan      html  css  js  c++  java
  • 设计模式学习系列之(二)观察者模式

    观察者模式的定义:在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新

    大白话:其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。

    模式包含四个角色:

    • 抽象被观察者角色:也就是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,每个主题都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实现。
    • 抽象观察者角色:为所有的具体观察者定义一个接口,在得到主题通知时更新自己。
    • 具体被观察者角色:也就是一个具体的主题,在集体主题的内部状态改变时,所有登记过的观察者发出通知。
    • 具体观察者角色:实现抽象观察者角色所需要的更新接口,一边使本身的状态与制图的状态相协调。

    使用场景例子:

      有一个微信公众号服务,不定时发布一些消息,关注公众号就可以收到推送消息,取消关注就收不到推送消息。

    观察者模式具体实现:

    引自:https://www.cnblogs.com/luohanguo/p/7825656.html

    java 自带观察者模式

    在Java中通过Observable类Observer接口实现了观察者模式。一个Observer对象监视着一个Observable对象的变化,当Observable对象发生变化时,Observer得到通知,就可以进行相应的工作。例如在文档/视图结构中,文档被修改了,视图就会得到通知。java.util.Observable中有两个方法对Observer特别重要,一个是setChange()方法用来设置一个内部标志位注明数据发生了变化;一个是notifyObservers()方法会去调用一个列表中所有的Observer的update()方法,通知它们数据发生了变化。

    Observer通过Observable的addObserver()方法把自己添加到这个列表中。这个列表虽然由Observable拥有,但Observable并不知道到底有哪些Observer正在观察等待通知。Observable只提供一个方法让Observer能把自己添加进列表,并保证会去通知Observer发生了变化。通过这种机制,可以有任意多个Observer对Observable进行观察,而不影响Observable的实现。

  • 相关阅读:
    《代码整洁之道》
    SharePoint Use backup, restore and export
    sharepoint站点支持AJAX功能做些简要说明
    使用vbs或者bat脚本修改IE浏览器安全级别和选项
    创建 Silverlight 应用程序以访问 SharePoint 2010 数据
    CPU使用率过高的 9种可能
    几条在SharePoint中使用SilverLight注意事项
    通过WebService操作SharePoint列表数据
    开发部署Sharepoint自定义webservice
    SQL Server发送邮件的存储过程
  • 原文地址:https://www.cnblogs.com/aaronRhythm/p/10821000.html
Copyright © 2011-2022 走看看