早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

阅读以下说明和Java代码,将应填入(n)处。[说明] 在一公文处理系统中,开发者定义了一个公文类Offic

题目

阅读以下说明和Java代码,将应填入(n)处。

[说明]

在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组 DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的 DocExplorer对象都将得到通知,这种应用被称为观察者模式。以下代码采用Java语言实现,能够正确编译通过。

[Java代码]

//Subject.java 文件

public interface Subject {

public void attach(Observer DocExplorer);

public void detach(Observer DocExplorer);

void notifyObservers();

}

//Observer.java 文件

public interface Observer{

void update((1) );

}

//OfficeDoc.java 文件

import java.util.*;

public class OfficeDoc implements Subject(//OfficeDoc 类实现 Subject 接口

private Vector bserverVeetor=new java.util.Vector();

//存储与OfficeDoc相关联的DocExplorer 对象

public void attach(Observer observer){

//将某 DocExplorer 对象与OfficeDoc 相关联

ObserverVector.addElement(observer);

}

public void detach(Observer observer){

//解除某DocExplorer 对象与OfficeDoc的关联关系

ObserverVector.removeElement(observer);

}

public void notifyObservers(){

//当OfficeDoc对象状态已发生变化时,通知所有的DocExplorer对象

Enumeration enumeration=(2);

while (enumeration.hasMoreElements()){

((Observer)enumeration.nextElement()).(3);

}

}

public Enumeration Observers(){

return ObserverVector.elements();

}

//其他公文类的属性和方法省略

}

//DoeExplorer.java 文件

public class DocExplorer implements (4) {

public void update( (5) ){

//更新DocExplorer自身的状态,代码省略

}

}

参考答案
正确答案:(1) Subject subject(注:第二个subject可用其他标识符替换) (2) Observers() (3) update(this) (4) Observer (5) Subject subject(注:第二个subject可用其他标识符替换)
(1) Subject subject(注:第二个subject可用其他标识符替换) (2) Observers() (3) update(this) (4) Observer (5) Subject subject(注:第二个subject可用其他标识符替换) 解析:第(1)空处观察者对象更新自身的状态,更新的数据应该来自被观察者对象,所以此处应该为一Subject,因此第(1)空的答案为Subject subject。同样的道理,第(5)空和第(1)空是相同的。
notifyObservers方法通知所有的观察者对象更新自身的状态,所以(2)空处应该返回所有的观察者对象,调用方法Observers()即可获得。第(3)空处对每个观察者对象更新状态,所以应该调用update方法,update方法需要此被观察者对象作为参数,所以使用this来获取对象自身。DocExplorer是一个观察者,因此需要实现接口Observer,第(4)空为Observer。