为了账号安全,请及时绑定邮箱和手机立即绑定

观察者模式

GerryZhang JAVA开发工程师
难度中级
时长 1小时56分
学习人数
综合评分9.53
113人评价 查看评价
9.7 内容实用
9.6 简洁易懂
9.3 逻辑清晰
  • Java 实现 VS 自己实现的对比4点 (1)不需要再定义观察者和目标接口(JDK已经定义) (2)具体的目标实现里面不需要再维护观察者的注册信息,Java中的Observable类里面已经实现 (3)触发通知的方式有一点变化,要先调用setChanged方法,这个是Java为了帮助实现更精确的触发控制而提供的功能。 (4)具体观察者的实现里面,update方法其实能同时支持推模型和拉模型,这个Java在定义的时候,已经考虑
    查看全部
  • 利用Java提供的观察者实现---- java.util包中 Observable类,接口Oberver中的update()方法
    查看全部
  • (3)推模型会使观察者对象难以复用;拉模型下,update方法的参数是目标对象本身,基本上可以适应各种情况的需要。
    查看全部
  • 推模型 VS 拉模型 (1)推模型是假定目标对象知道观察者需要的数据 (2)拉模型是目标对象不知道观察者具体需要什么数据,因此把自身传给观察者,由观察者来取值
    查看全部
  • 一般这种拉模型的实现中,会把目标对象自身通过update方法传递给观察者
    查看全部
  • 观察者模式 3.2 实现的 2 种方式:推模型 & 拉模型 (1)推模型:目标对象主动向观察者推送目标的详细信息。推送的信息通常是目标对象的全部或部分数据。 (2)拉模型:目标对象在通知观察者的时候,只传递少量信息。如果观察者需要更具体的信息,由观察者主动到目标对象中获取,相当于是观察者从目标对象中拉数据。
    查看全部
  • 观察者模式又被称为发布订阅模式: 命名建议: (1)目标接口的定义,建议在名称后面跟Subject (2)观察者接口的定义,建议在名称后面跟Observer (3)观察者接口的更新方法,建议名称为update,参数的个数及类型不受限制
    查看全部
  • 观察者模式--3.1 认识观察者模式 (1)目标与观察者之间的关系 (2)单向依赖 (3)命名建议 (4)触发通知的时机 (5)观察者模式的调用顺序示意图 (6)通知的顺序
    查看全部
  • 学习观察者模式通用代码 步骤: (1)目标对象的定义 (2)具体的目标对象的定义 (3)观察者接口的定义 (4)观察者的具体实现
    查看全部
  • 观察者模式的定义: 定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
    查看全部
    1 采集 收起 来源:课程简介

    2016-02-23

  • 牵一发而动全身
    查看全部
  • 观察者的优缺点: 优点: 1、实现了观察者和目标之间的抽象耦合;目标只知道观察者接口,不知道观察者具体类; 2、实现了动态联动,控制联动范围; 3、支持广播通信,对注册的目标广播,可添加限制广播的范围 缺点: 可能引起无谓的操作,如果观察者不需要处理,也update,性能下降或误操作,设计模式三十六计,需要用计谋的人熟练。 “触发联动”, 本质,触发相应通知,循环调用所有观察者的方法。 何时选用观察者模式? 1、一个抽象模型两个方面,其中一个方面的操作依赖另一个方面的状态变化,则让它们独立开来 2、更改一个对象时,需要同时连带改变其他对象,且不知道究竟有多少对象需要被连带改变,则被连带修改的当做是多个观察者对象 3、当一个对象必须通知其他对象,但又希望它和被通知对象是松散耦合,即不想知道被通知的对象,则这个对象是目标对象,其他是观察者。 后续: 观察者的高级部分、变形,与其他部分的结合使用
    查看全部
  • 用java中已有的功能来实现观察者模式非常简单,与自己定义相比,有四点: 1、不需要再定义观察者和目标的接口了(接口回调还是需要的),JDK帮忙定义了; 2、具体目标实现里面不需要再维护观察者的注册信息了(不需要attach和detach),在Java中的Observable类里面已经帮忙实现好了; 3、触发通知的方式有一点变化,要先调用setChanged方法,是Java为了帮助实现更精确触发控制而提高的功能(现在已经Android6.0了,这个方法还存在吗,得参看最新SPI); 4、具体观察者的实现里面,update方法其实能同时支持推模型和拉模型,Java在定义时已经考虑。
    查看全部
  • 推模型假定目标对象知道观察者需要的数据是什么; 拉模型是目标对象不知道观察者具体需要什么数据,把目标整个传给观察者,让它自取。 推模型使得观察者难以复用,可能存在目标对象没有考虑到的方面,从而需要定义新的update方法,或需要重新实现观察者。 拉模型,由于传的参数是本身,可以让观察者各取所需。
    查看全部
  • 推模型: 目标对象主动向观察者推送目标的详细信息,相当于广播信息; 推送的信息通常是目标对象的全部或部分数据。 拉模型: 目标对象在通知观察者的时候,只传递少量信息; 如果观察者需要更具体的信息,由观察者主动到目标对象中获取,相当于是观察者从目标对象中拉数据。 一般拉模型实现中,会把目标对象自身通过update方法传递给观察者。观察者需要获取数据时,通过对目标的引用来获取。 拉模型中(上节介绍的),update中传入了WeatherSubject的引用; 推模型中,根据需要来填入数据,观察者达到按需取内容,目标类可以修改notifyObservers的参数来按需推送内容,在Subject中修改了notifyObservers后要在Subject的子类中setContent的引用notifyObserver时对应修改参数。
    查看全部

举报

0/150
提交
取消
课程须知
学习本课程前,需要具备Java基础,面向对象的程序设计思想。如果对这些知识不熟悉,可以学习《Java入门第一季》和《Java入门第二季》这两门课程。
老师告诉你能学到什么?
1、理解观察者模式的概念和结构 2、掌握如何将观察者模式应用到项目中,解决项目实际问题 3、掌握观察者模式的应用场景

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!