首页 > 题库 > 职业考证 > 软考 > 软件设计师 > 案例题

阅读下列说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
某文件管理系统中定义了类OfficeDoe和DocExplorer。当类OfficeDoe发生变化时,类DocExplorer的所有对象都要更新其自身的状态。现采用观察者(Observer)设计模式来实现该需求,所设计的类图如图6-1所示。

图6-1

【Java代码】

import java.util.*;
interface Observer{
     public (1) ;
}

interface Subject{
     public void Attach(Observer obs);
     public void Detach(Observer obs);
     public void Notify();
     public void setStatus(int status);
     public int getStatus();
}

class OfficeDoc implements Subject{
     private List< (2) > myObs;
     private String mySubjectName;
     private int m_status;
     public OfficeDoc(String name){
       mySubjectName=name;
       this.myObs=new ArrayList<Observer>();
       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);
     }
     public int getStatus(){return m_status;}
}

class DocExplorer implements Observer{
     private String myObsName;
     public DocExplorer(String name, (4) sub){
       myObsName=name;
       sub. (5) ;
     }
     public void update(){
       System.out.println("update observer["+myObsName+"]");
     }
}

class ObserverTest{
   public static void main(String []args) {
     System.out.println("Hello World!");
       Subject subjectA=new OfficeDoc("subject A");
       Observer oberverA=new DocExplorer("observer A",subjectA);
      subjectA.setStatus(1);
     subjectA.Notify();
     }
}




参考答案: 查看答案 查看解析 查看视频解析 下载APP畅快刷题

相关知识点试题

相关试卷