-
观察者的优缺点: (1)观察者模式实现了观察者和目标之间的抽象耦合。原本目标对象在状态发生改变的时候需要直接调用所有的观察者对象,但是抽象出观察者接口以后,目标和观察者就只是在抽象上耦合了,也就是说目标只知道观察者的接口,不知道具体的观察者的类,从而实现了目标类和具体观察者类之间的解耦。 (2)观察者模式实现了动态联动(做一个操作会引起其他相关的操作)由于观察者模式对观察者进行注册管理,就可以在运行期间通过动态的控制注册的观察者来控制某个动作的联动范围。 (3)观察者模式支持广播通信。 缺点: (1)可能会引起无谓的操作。查看全部
-
notifyObservers 这个方法有两种形式,当使用带参数的类型时就属于推模式,仅仅传入信息,当用无参的方法时,其实是将对象的引用传给观察者的update方法来进行操作,这两种方式只能用一个。查看全部
-
我么可以使用java中自带的观察者模式实现观察者模式,在java.util包中有一个Observable类,他实现了大部分我们需要的目标的功能,还有一个接口Observer,定义了update()方法。 (1)不需要再定义观察者和目标的接口了,JDK帮忙定义了。 (2)具体目标的实现里面不需要在维护的注册信息了,这个在java中的Observable类里面已经帮忙实现好了。 (3)触发通知的方式有一点变化,首先要强调使用setChanged方法这个是java为了帮助实现更精确的触发控制而提供的功能。 (4)具体的观察者实现里面,update方法其实能同时支持推模型和拉模型,这个是java在定义的时候已经考虑进去了。查看全部
-
1,推模型:假定目标知道观察者需要的数据。使观察者难以复用,需要重新实现update方法。 2,拉模型:不知道观察者具体需要什么数据,因此把自身传递给观察者,由观察者来取值, update方法的参数是目标对象本身,基本可以适应各种情况的需要。查看全部
-
观察者模式中的推模型和拉模型: 1,推模型:目标对象主动向观察者推送目标的详细信息,不管观察者是否需要,推送的信息通常是目标对象的全部或部分数据。相当于是在广播通信。 2,拉模型:目标对象再通知观察者时,值传递少量信息,如果观察者需要具体的信息,由观察者主动到目标对象中获取,相当于是观察者从目标对象中拉数据。一般这种模型的实现中会把目标对象自身通过update方法传递给观察者。这样就可以通过这个引用获取。查看全部
-
5,观察者模式的调用顺序示意图:查看全部
-
1,一个观察者可以关注多个目标 2,观察者模式中,观察者和目标是单向依赖,只有观察者依赖目标不是目标依赖观察者主动权掌握在目标的手中只有目标知道什么时候通知观察者,整个过程中观察者始终是被动的。 3,命名建议:观察者模式又称为“发布订阅模式” (1)目标接口的定义建议在名称后面跟上Subject。 (2)观察者接口的定义,建议在名称后面跟Observer。 (3)观察者接口更新的方法建议名称为update。 4,触发通知的时机: (1)一般是在完成状态维护后触发因为通知会传递数据,先通知后改数据会导致观察者和对象的状态不一致。查看全部
-
认识观察者的六大方面: 1,目标与观察者之间的关系 2,单项依赖 3,命名建议 4,触发通知的时期 5,观察者模式的调用顺序示意图 6,通知的顺序。查看全部
-
定义观察者模式的四个步骤:查看全部
-
观察者模式:定义对象间的一种一对多的依赖关系。当对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 一对多模式:一个目标可以有任意多个观察者对象,一旦目标的状态发生改变,目标的所有观察者都会做出相对应的响应查看全部
-
命名建议查看全部
-
观察者模式的结构查看全部
-
观察模式的好处:统一通知,各自处理;查看全部
-
...查看全部
-
1.当一个抽象模型有两个方面,其中一个方面的操作依赖于另一个方面的状态变化时 2.如果在封盖一个对象的时候,需要同时连带改变其他的对象,而且不知道究竟应该有对少对象需要被连带改变 3.当一个对象必须通知其他的对象,但是你又希望这个对象和其他被他通知的对象是松散耦合的查看全部
举报
0/150
提交
取消