小菜写的第一份代码:
1、前台秘书类
- 属性:
1、既然是帮忙打掩护,就要搞清楚帮谁打掩护了。所以就要有个同事列表observers,记录那些上班开小差需要僚机的同事。
2、用action(String类型)存储提醒同事的内容,比如:老板回来了、老板出去了、…- 方法:
1、Attach方法可以添加新的需要打掩护的同事;
2、Notify方法可以一一为列表里的同事通风报信;
3、SecretaryAction方法操作action,设置通风报信的内容;
public class Secretary {
// 同事列表
private List<StockObserver> observers =
new ArrayList<StockObserver>();
// 密保内容
private String action;
public Secretary() {
super();
}
// 添加
public void Attach(StockObserver observer) {
observers.add(observer);
}
// 通知
public void Notify() {
for(StockObserver o : observers) {
o.Update();
}
}
// 前台状态
public String SecretaryAction() {
return action;
}
public void SecretaryAction(String action) {
this.action = action;
}
}
2、看股票同事类
- 属性:
1、姓名
2、帮忙当僚机的前台秘书对象- 方法:
1、得到前方密保,采取对应措施:开始认真工作
public class StockObserver {
private String name;
private Secretary sub;
public StockObserver(String name, Secretary sub) {
this.name = name;
this.sub = sub;
}
public void Update() {
System.out.println(sub.SecretaryAction() + this.name +
" 关闭股票行情,继续工作!");
}
}
3、客户端代码
public class Observer1Demo {
public static void main(String[] args) {
Secretary tongzizhe = new Secretary();
StockObserver tongshi1 = new StockObserver("大鸟", tongzizhe);
StockObserver tongshi2 = new StockObserver("小菜", tongzizhe);
tongzizhe.Attach(tongshi1);
tongzizhe.Attach(tongshi2);
tongzizhe.SecretaryAction("老板回来了!");
tongzizhe.Notify();
}
}
4、输出结果
老板回来了!大鸟 关闭股票行情,继续工作!
老板回来了!小菜 关闭股票行情,继续工作!
缺点:前台类就只通知了看股票者类,如果有其他同事在干别的事就没有通知到了。