试题六(共15分) 阅读以下说明和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 Obsever{ void update(____(1)____);
}
//OfficeDoc.java 文件 import java.util.*; public class
OfficeDoc implements Subject { //OfficeDoc 类实现Subject 接口 private Vector
ObserverVector = new java.util.Vector(); //存储与OfficeDoc 相关联的DocExplorer
对象 public void attach(Obsever 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();
} //其它公文类的属性和方法省略 }
//DocExplorer.java 文件 public class
DocExplorer implements _____(4)____{ public void
update(____(5)____){ //更新 DocExplorer 自身的状态,代码省略 } }
|