/*
用java代码实现观察者模式,
前台负责观察老板在办公室还是离开并通知大家,
用观察者模式实现这一过程,请实现Guard类。
使最终输出结果为:
“老板在办公室”
“前台通知大家:老板离开了”
“前台通知大家:老板回来了”
*/
//被观察的对象。
import java.util.Observable;
class Boss extends Observable {
private String name;
private String state;
public Boss(String name, String state) {
this.name = name;
this.state = state;
}
public String getName() {
return name;
}
public String getState() {
this.notifyObservers(state);
System.out.println(getName() + state);
return state;
}
public void setState(String state) {
this.state = state;
this.setChanged();
this.notifyObservers(state);
}
}
//观察者
package StaticHao;
import java.util.Observable;
import java.util.Observer;
class Guard implements Observer{
//观察者的状态
private String person;
public Guard(String person){
this.person=person;
}
@Override
public void update(Observable o, Object arg) {
// TODO 自动生成的方法存根
String state=arg.toString();
System.out.println(person+"通知大家:老板"+state);
}
}
public class ObserverTest {
public static void main(String[] args) {
Boss Boss = new Boss("老板", "在办公室");
Guard guard = new Guard("前台");
Boss.addObserver(guard);
Boss.getState();
Boss.setState("离开了");
Boss.setState("回来了");
}
}