题目详情

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

中级软件设计师,历年真题,2019年下半年(下午)《软件设计师》真题

图6-1

【Java代码】

中级软件设计师,历年真题,2019年下半年(下午)《软件设计师》真题

中级软件设计师,历年真题,2019年下半年(下午)《软件设计师》真题

中级软件设计师,历年真题,2019年下半年(下午)《软件设计师》真题

正确答案及解析

正确答案
解析

(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)。

包含此试题的试卷

你可能感兴趣的试题

单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S2)和P(S4)
  • B.P(S2)和V(S4)
  • C.P(S2)和P(S4)
  • D.V(S2)和V(S4)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S1)P(S2)和V(S3)
  • B.P(S1)V(S2)和V(S3)
  • C.V(S1)V(S2)和V(S3)
  • D.P(S1)P(S2)和V(S3)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S4)和V(S4)V(S5)
  • B.V(S5)和P(S4)P(S5)
  • C.V(S3)和V(S4)V(S5)
  • D.P(S3)和P(S4)V(P5)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S3)和V(S4)V(S5)
  • B.V(S3)和P(S4)P(S5)
  • C.P(S3)和P(S4)P(S5)
  • D.V(S3)和V(S4)V(S5)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S2)和P(S4)
  • B.P(S2)和V(S4)
  • C.V(S2)和P(S4)
  • D.V(S2)和V(S4)
查看答案

相关题库更多 +