zoukankan      html  css  js  c++  java
  • 设计模式_Observer_观察者模式

    形象例子:

      想知道咱们公司最新MM情报吗?加入公司的MM情报邮件组就行了,tom负责搜集情报,他发现的新情报不用一个一个通知我们,直接发布给邮件组,我们作为订阅者(观察者)就可以及时收到情报啦。

    观察者模式:

      观察者模式定义了一种一队多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己。

    作用:
      定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新.

    UML结构图:



    解析:
      Observer 模式定义的是一种一对多的关系,这里的一就是图中的Subject类,而多则是Obesrver类,当Subject类的状态发生变化的时候通知与之对应 的Obesrver类们也去相应的更新状态,同时支持动态的添加和删除Observer对象的功能.Obesrver模式的实现要点是,第一一般 subject类都是采用链表等容器来存放Observer对象,第二抽取出Observer对象的一些公共的属性形成Observer基类,而 Subject中保存的则是Observer类对象的指针,这样就使Subject和具体的Observer实现了解耦,也就是Subject不需要去关 心到底是哪个Observer对放进了自己的容器中.生活中有很多例子可以看做是Observer模式的运用,比方说,一个班有一个班主任 (Subject),他管理手下的一帮学生(Observer),当班里有一些事情发生需要通知学生的时候,班主任要做的不是逐个学生挨个的通知而是把学 生召集起来一起通知,实现了班主任和具体学生的关系解耦.

  • 相关阅读:
    torch 入门
    编译CDH Spark源代码
    Marsedit 破解版下载(3.5.6)
    程序员必备:技术面试准备手册
    360私有化详细资料曝光:抵押总部大楼(转)
    底层软件工程师的一次冒险经历
    这十种算法撑起了整个世界
    秒杀系统架构分析与实战(深度学习资料)
    北京程序员 VS 硅谷程序员(转)
    Timestamp 使用
  • 原文地址:https://www.cnblogs.com/uestc999/p/3949944.html
Copyright © 2011-2022 走看看