-
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、实现了观察者和目标之间的抽象耦合;目标只知道观察者接口,不知道观察者具体类; 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
提交
取消