/**
*程序员是观察者
*/
public class Coder implements Observer {
public String name;
public Coder(name){
this.name = name;
}
@Override
public void update(Observable o, Object arg) {
System.out.println(name + “收到了更新 “ + arg);
}
@Override
public String toString() {
return “码农:” + name;
}
}
/**
*DevTechFrontier 即开发技术前线,这个网站是被观察者,当他有更新时所有的观察者(这里指的是程序员都会收到更新的相应通知)
*/
public class DevTechFrontier extends Observable {
public void postNewPublication(String content) {
//标识状态或内容发生改变
setChanged();
//通知所有观察者
notifyObservers(content);
}
}
//测试代码
public class Test {
public static void main() {
//被观察角色
DevTechFrontier devTechFrontier = new DevTechFrontier();
//观察者
Coder mrsimple = new Coder(“mr.simple”);
Coder coder1 = new Coder(“coder-1”);
Coder coder2 = new Coder(“coder-2”);
Coder coder3 = new Coder(“coder-3”);
//将观察者注册到可观察对象的观察者列表中
DevTechFrontier.addObserver(mrsimple);
DevTechFrontier.addObserver(coder1);
DevTechFrontier.addObserver(coder2);
DevTechFrontier.addObserver(coder3);
//发布消息
DevTechFrontier.postNewPublication(“新的一期开发技术前线周报上线啦”);
}
}
//运行结果
mr.simple收到了更新新的一期开发技术前线周报上线啦
coder-1收到了更新新的一期开发技术前线周报上线啦
coder-2收到了更新新的一期开发技术前线周报上线啦
coder-3收到了更新新的一期开发技术前线周报上线啦
网友评论