首页
登录
从业资格
某文件管理系统中定义了类OfficeDoc和DocExplorer。当类Offi
某文件管理系统中定义了类OfficeDoc和DocExplorer。当类Offi
练习题库
2022-08-02
46
问题
某文件管理系统中定义了类OfficeDoc和DocExplorer。当类OfficeDoc发生变化时,类DocExplorer的所有对象都要更新其自身的状态。现采用观察者(Observer)设计模式来实现该需求,所设计的类图如图6-1所示。
选项
答案
解析
(1)virtual void update()=0(2)Observer*(3)(*iter)->update()(4)Subject*(5)Attach(this)本题考查设计模式中的观察者(Observer)模式的基本概念和应用。观察者模式的意图是,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式的结构图如图5-2所示。
其中:Subject(目标)知道它的观察者,可以有任意多个观察者观察同一个目标;提供注册和删除观察者对象的接口。Observer(观察者)为那些在目标发生改变时需获得通知的对象定义一个更新接口。ConcreteSubject(具体目标)将有关状态存入各ConcreteObserver对象;当它的状态发生改变时,向它的各个观察者发出通知。ConcreteObserver(具体观察者)维护一个指向ConcreteSubject对象的引用;存储有关状态,这些状态应与目标的状态保持一致;实现Observer的更新接口,以使自身状态与目标的状态保持一致。观察者模式适用于:当一个抽象模型有两个方面,其中一个方面依赖于另一个方面,将这两者封装在独立的对象中以使它们可以各自独立地改变和复用。当对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变时。当一个对象必须通知其他对象,而它又不能假定其他对象是谁,即不希望这些对象是紧耦合的。本题中的类Subject对应于图6-2中的Subject,类OfficeDoc对应ConcreteSubject,类Observer对应图6-2中的Observer,类DocExplore对应ConcreteObserver。DocExplore维护一个指向OfficeDoc对象的引用,当OfficeDoc的状态发生改变时,向DocExplore发出通知。第(1)空需要填写Observer中的核心方法,即在目标发生改变时通知观察者的更新接口。这个方法的原型可以在Obsever的子类DocExplore中找到:void update()。update方法需要在其子类中进行重置,这里采用了C++中的动态多态计机制——纯虚拟函数。所以第(1)空应填入virtual void update()=0。一个Subject可以有多个观察者,在Subject中需要提供增加和删除观察者的接口,即类中的Attach、Detach方法。这两个方法的主要操作对象就是类中的属性myObs。根据程序上下文推断,myObs表示的应该是观察者的集合,所以第(2)空应填入Observer*。第(3)空出现在Subject的方法Notify中,这个方法的功能是当目标发生变化时,通知所有与该目标关联的观察者,即调用每个观察者定义的update方法,所以第(3)空应填入(*iter)->update()。DocExplore是一个具体的观察者,它需要维护一个指向目标的对象,在这里实际上就是指向OfficeDoc的对象。观察者与目标的关联关系是通过DocExplore的构造函数实现的。在面向对象的继承机制中,通常倾向于用基类指针代替派生类指针,因此第(4)空应填入Subject*。观察者与目标的关联关系的建立需要调用Subject中的方法Attach,因此第(5)空应填入Attach(this)。
转载请注明原文地址:https://tihaiku.com/congyezige/2409491.html
本试题收录于:
中级 软件设计师题库软件水平考试初中高级分类
中级 软件设计师
软件水平考试初中高级
相关试题推荐
在设计分E-R图阶段,人力部门定义的员工实体具有属件:员工号,姓名,性别和出生日
某省针对每年举行的足球联赛,拟开发一套信息管理系统,以方便管理球队、球员、主教练
某家电销售电子商务公司拟开发一套信息管理系统,以方便对公司的员工、家电销售、家电
在设计分E-R图阶段,人力部门定义的员工实体具有属件:员工号,姓名,性别和出生日
关于日志文件,下列说法错误的是()A.保存了更新前的数据 B.保存了更新后
假设日志文件的尾部如下图所示,则恢复时应执行的操作是()。 A.UndoT
( )一是构成我国保护计算机软件著作权的两个基本法律文件。计算机软件著作权的权利
《计算机软件产品开发文件编制指南》(GB8567-88)是()标准。A
某企业人事管理系统中有如下关系模式,员工表EmpCenrcpename,age
某企业人事管理系统中有如下关系模式,员工表EmpCenrcpename,age
随机试题
Theoxygenintheairwebreathehasno(taste)______,smellorcolor.taste我们呼吸
Opinionsvarywidelyconcerningworkplaceromance.Someorganizations,onth
极重、特重、重交通荷载等级公路面层水泥混凝土用天然砂的质量标准不应低于()
银行对不良个人住房贷款应采取电话催收、信函催收、上门催收、法律手段催收等方式。(
A.肝经B.肺经C.肾经D.心经E.脾经行于上肢内侧前缘的是
不属于医院药检室杂质检查的干燥失重操作的是A.常压恒温干燥法B.干燥剂干燥法C.
以下各类职工中,用人单位不得解除其劳动合同的有()。A.从事接触职业病危害作业
农业领域的公司制企业,按所有制可以划分为()。A.国有农业公司 B.有限责任
统计报表要以一定的原始数据为基础,按照()进行填报。A.统一的表式 B.统一
斜坡堤采用随机安放2层扭工字块体护面时,其外侧在波浪作用范围内应有60%以上(
最新回复
(
0
)