某文件管理系统中定义了类OfficeDoe和DocExplorer。当类Offi

资格题库2022-08-02  28

问题 某文件管理系统中定义了类OfficeDoe和DocExplorer。当类OfficeDoe发生变化时,类DocExplorer的所有对象都要更新其自身的状态。现采用观察者(Observer)设计模式来实现该需求,所设计的类图如图6-1所示。图6-1【Java代码】

选项

答案

解析 (1)void update();
(2)Observer;
(3)obs.update();
(4)Subject;
(5)Attach(this);
本题是对观察者模式的考查,观察者模式的意图是:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
本题根据Observer接口的实现类DocExplorer,实现类包括同名构造函数和update()方法,所以接口Observer缺失的是update()方法,并且没有方法体,(1)空填写void update()。
第2空是myObs表单类型的缺失,根据代码上下文,在构造函数中,根据this.myObs=new ArrayList<Observer>(),可以知道myObs是Observer表单,第(2)空填写Observer。
第3空是Notify()方法体的缺失,根据代码上下文,Notify传入了一个参数Observer obs,又根据代码上下文可知Observer只有一个update()方法,此时方法体调用的应该是update()方法,调用方法的对应是传入的obs,第(3)空填写obs.update()。
第4空、第5空缺失的是DocExplorer类的同名构造函数传入的参数类型以及构造方法体,这里结合根据观察者模式填空,对于实际观察者类,需要与被观察者联系起来,所以这里是与被观察者Subject联系,也就是调用Subject中的Attach()添加观察者列表。因此第(4)空需要填写参数类型Subject,形参名sub已经给出了提示;sub调用增加观察者方法,将当前观察者添加到对应列表,即第(5)空填写Attach(this)。
转载请注明原文地址:https://www.tihaiku.com/congyezige/2409599.html

最新回复(0)