首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】 某文件管理系统中定义了类OfficeDoc和DocExplorer。当类OfficeDoc发生变化时,类DocExplorer的所有对象都要更新其自身的状态
阅读下列说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】 某文件管理系统中定义了类OfficeDoc和DocExplorer。当类OfficeDoc发生变化时,类DocExplorer的所有对象都要更新其自身的状态
admin
2021-03-24
49
问题
阅读下列说明和Java代码,将应填入
(n)
处的字句写在答题纸的对应栏内。
【说明】
某文件管理系统中定义了类OfficeDoc和DocExplorer。当类OfficeDoc发生变化时,类DocExplorer的所有对象都要更新其自身的状态。现采用观察者(Observer)设计模式来实现该需求,所设计的类图如图6-1所示。
【Java代码】
importjava.util.
*
;
interface Observer{
public
(1)
;
};
interface Subject{
public void Attach(Obseryer obs);
public void Detach(Observer obs);
public void Notify();
public void setStatus(int status);
publicintgetStatus();
};
classOfficeDoc implements Subject{
private List<
(2)
>myObs;
private String mySubjectName;
privateintm_status;
publicofficeDoc(String name){
mySubjectName=name;
this.myObs=new ArrayList
();
m_status=0;
}
public void Attach(Observer obs){this.myObs.add(obs);}
public void Detach(Observer obs){this.myObs.remove(obs);}
public void Notify(){
for(Observer obs:this.myObs){
(3)
;}
}
public void setStatus(int status){
m_status=status;
System.out.println("SetStatus subject["+mySubjectName+"]status:"
+status);
}
publicintgetStatus(){return m status;}
};
classDocExplorer implements Observer{
private String myObsName;
public DocExpiorer(String name,
(4)
sub){
myObsName=name;
sub.
(5)
;
}
public void update() {
System.out.printin("update observer["+myObsName+"]");
}
};
claSsObserverTest{
public static void main(String[]args){
Subject subjectA=new OfficeDoc("subject A");
Observer oberverA=new DocExplorer("observer A",subjectA);
subjectA.setStatus(1);
subjectA.Notify();
}
}
选项
答案
(1)void update() (2)Observer (3)obs.update() (4)Subject (5)Attach(this)
解析
本题考查设计模式中的观察者(Observer)模式的基本概念和应用。
观察者模式的意图是,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式的结构图如图6-2所示。
其中:
●Subiect(目标)知道它的观察者,可以有任意多个观察者观察同一个目标;提供注册和删除观察者对象的接口。
●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()。这里Observer被定义为了接口,update方法需要在其子类中进行实现,所以第(1)空应填入void update()。
一个Subject可以有多个观察者,在Subject中需要提供增加和删除观察者的接口,即类中的Attach、Detach方法。这两个方法的主要操作对象就是类中的属性myObs。根据程序上下文推断,myObs表示的应该是观察者的集合,所以第(2)空应填入Observer。
第(3)空出现在Subject的方法Notity中,这个方法的功能是当目标发生变化时,通知所有与该目标关联的观察者,即调用每个观察者定义的update方法,所以第(3)空应填入obs.update()。
DocExplore是一个具体的观察者,它需要维护一个指向目标的对象,在这里实际上就是指向OfficeDoc的对象。观察者与目标的关联关系是通过DocExplore的构造函数实现的。因此第(4)空应填入Subject。
观察者与目标的关联关系的建立需要调用Subject中的方法Attach,因此第(5)空应填入Attach(this)。
转载请注明原文地址:https://kaotiyun.com/show/1oxZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
限制MailUser邮件主机里每个用户的邮箱大小不超过10MB,如何配置?如何暂时禁用某个用户账号?
划分VLAN有哪几种划分方式?填充VLAN信息表,见表1,将答案填写在相应位置。
在WindowsServer2003的“路由和远程访问”中提供两种隧道协议来实现VPN服务:(1)和L2TP,L2TP协议将数据封装在(2)协议帧中进行传输。 如图所示的配置窗口中所列协议“不加密的密码(PAP)”和“质询握手身份验证协议(cHA
在WindowsServer2003的“路由和远程访问”中提供两种隧道协议来实现VPN服务:(1)和L2TP,L2TP协议将数据封装在(2)协议帧中进行传输。 在服务器1中,利用WindowsServer2003的管理工具打开“路由和远程访问
根据网络拓扑和要求,解释并完成路由器Rl上的部分配置。Rl(config)#cryptoisakmpenable(启用IKE)R1(config)#cryptoisakmp(1)20(配置IKE策略20)R1(config-isakmp)#au
在Linux操作系统下,可通过命令(2)显示路由信息。若主机所在网络的网关IP地址为192.168.0.254,则可使用命令(3)adddefault(4)192.168.0.254添加网关为默认路由。备选答案:A.nets
根据网络拓扑和需求说明,完成(或解释)路由器R1的配置。R1#configureterminal;进入全局配置模式R1(config)#interraceethernet0;进入端口配嗣模式R1(config-i
阅读以下说明,回答问题。(2011年下半年下午试题三)[说明]在windowsServer2003中可以采用筛选器来保护DNS通信。某网络拓扑结构如图4-86所示,WWW服务器的域名是www.shangxueba.com,DNS服务器上安装了Wind
在网络的拓扑结构中,处于上层的结点称为(36)。只要有一个结点发生故障,网络通信就无法进行的结构是(37);数据单方向传输的拓扑结构是(38)。(39)允许某些站点具有优先级。交换式局域网属于(40)。
访问控制列表access-list109denyip10.1.0.00.0.255.255anyeq80的含义是:(58)。
随机试题
Ihaveneverseenamorecaring,________groupofpeopleinmylife.
脂质体的形态观察以高倍显微镜观察较好,粒径小的脂质体以什么来观察
清热燥湿又能安胎的药物清热燥湿又能杀虫止痒的药物
甲公司欠税40万元,税务局要查封其相应价值产品。甲公司经理说:“乙公司欠我公司60万元货款,贵局不如行使代位权直接去乙公司收取现金。”该局遂通知乙公司缴纳甲公司的欠税,乙公司不配合;该局责令其限期缴纳,乙公司逾期未缴纳;该局随即采取了税收强制执行措施。关于
私募基金管理人应当建立有效的人力资源管理制度健全激励约束机制,确保工作人员具备与岗位要求相适应的()。
下列有关无形资产的会计处理正确的是()。
在医患纠纷中,医务社会工作者作为沟通的桥梁和纽带,不仅可以解决病人的心理问题、社会适应问题,还能有效化解医患矛盾、提供各种与健康福利相关的专业服务。遗憾的是,在目前我国的顶层制度设计中,医务社工制度的设立还没有得到足够的重视,造成了医患之间存在直接利益关系
张局长找甲、乙、丙三名处长谈话,准备与甲谈10分钟,与乙谈12分钟,与丙谈8分钟。秘书带三人到局办公室后对谈话的顺序做了合理安排,使三人谈话的时间与等待时间之和为最短.则这个最短时间是()。
有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=f
茶在中国人的情感(emotional)生活中扮演了重要的角色。到中国人家里做客,主人家总是立刻就敬上一杯茶。上茶不只是礼貌,它象征着团聚,代表着尊重,主人与访客共享美好时光。主人沏茶只倒七分满(seventenths),另外三分装的是友情和关爱。对访客而
最新回复
(
0
)