//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 ObserverVector=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 notifyObserver(){
         //当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(Subject subject){
         //更新DocExplorer自身的状态,代码省略
     }
 }

解决方案 »

  1.   

    (1):Subject subject
    (2):(new OfferDoc()).Observers()
    (3):
    (4): Observer
      

  2.   

    (2): ObserverVector.elements();
    (3): update(this);1和4同1楼
      

  3.   

    void update( (1) ); // 从public class DocExplorer implements (4) { 可以知道,(4)填 Observer,(1)填 Subject subjectEnumeration enumeration= (2) 
    while(enumeration.hasMoreElements()){ //从这里可以知道,(2)要返回Vector对象的元素,即填ObserverVector.elements();
    ((Observer)enumeration.nextElement()). (3) //从Vector保存的元素是Observer接口实例知道,此处应该调用Observer的接口方法,即update,而从(1)可以知道,update的参数是Subject对象,所以参数用this就可以指定是当前Subject对象实例所以得出结果
    (1) Subject subject
    (2) ObserverVector.elements();
    (3) update(this)
    (4) Observer