软件设计师——初学java(2)

2021下半年案例6

阅读下列说明和Java代码,将应填入(n)处的字句写在题纸的对应栏内。

【说明】某文件管理系统中定义了OfficeDoe和DocExplorer。当类OfficeDoe发生变化时,类DocExplorer的所有对象都要更新其自身的状态。现采用观察者(Observer)设计模式来实现该需求,所设计的类图如图6-1所示。

ec404471a7ad4a2f965f193a019ce856.png

import java.util.*;
interface Observer {
	//public (1);
	public void update();
}
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 List < Observer > 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);×
			//this.myObs.edit(obs);
			obs.update();
		}
	}
	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) {
	public DocExplorer(String name, Subject sub) {
		myObsName = name;
		//sub.(5)
		//×sub.update(myObsName);
		sub.Attach(this);
	}
	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("subjectA");
		Observer observerA = new DocExplorer("observerA", subjectA);
		subjectA.serStatus(1);
		subjectA.Notify();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值