博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
观察者模式
阅读量:4093 次
发布时间:2019-05-25

本文共 589 字,大约阅读时间需要 1 分钟。

  • 定义
    • 一种一对多的依赖关系,让多个观察者对象监听某一个主题对象。这个主题对象发生动态变化时,会通知所有观察者对象使他们能够自己更像自己。
  • 模式结构
    • 抽象主题角色
    • 具体主题角色
    • 抽象观察者角色
    • 具体观察者角色
  • 使用场景
    • 当一个对象的改变需要同时改变其他对象的时候
    • 解除耦合,让耦合的双方都依赖于抽象而不是依赖于具体实现
  • 优点
    • 松耦合
    • 符合开闭原则,当有新的观察者进来时,只需要新增一个实现观察者接口的类即可。
  • 缺点
    • 客户端必须知道所有的观察者,并进行添加和删除
    • 如果观察者很多那么 所有观察者都接到消息比较耗费时间。
  • 事件委托
  • 模型
    • 推模型
      • 主题对象向观察者推送主题的详细信息,不管观察者是否需要,推送的信息通常是主题对象的全部或部分数据。
    • 拉模型
      • 主题对象在通知观察者的时候,只传递少量信息。如果观察者需要更具体的信息,由观察者主动到主题对象中获取,相当于是观察者从主题对象中拉数据。
      • 一般这种模型的实现中,会把主题对象自身通过update()方法传递给观察者,这样在观察者需要获取数据的时候,就可以通过这个引用来获取了
  • 应用场景
    • RxJava
    • jdk
      • Observer
      • Observable
    • spring
      • ApplicationListener
    • 购买完火车票后需要记录日志和短信通知
  • // TODO 具体代码参考其他博客与特定情境写了两版。后续待上传到github上再抛出地址

转载地址:http://qhiii.baihongyu.com/

你可能感兴趣的文章
Spring的IoC(依赖注入)原理
查看>>
Guava快速入门
查看>>
Java编程基础:static的用法
查看>>
Java编程基础:抽象类和接口
查看>>
Java编程基础:异常处理
查看>>
Java编程基础:了解面向对象
查看>>
新一代Java模板引擎Thymeleaf
查看>>
Spring MVC中使用Thymeleaf模板引擎
查看>>
Spring Boot构建简单的微博应用
查看>>
Spring处理表单提交
查看>>
Spring MVC异常处理
查看>>
Leetcode 1180. Count Substrings with Only One Distinct Letter [Python]
查看>>
PHP 7 的五大新特性
查看>>
php使用 memcache 来存储 session
查看>>
php实现socket(转)
查看>>
PHP底层的运行机制与原理
查看>>
php 几个比较实用的函数
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>