标签:耦合 load image rri pre nts @param rtt png
观察者
注意这里的接口 Observer ,这是观察要实现的接口,JDK 原生提供了 观察者接口的定义,这里就直接使用JDK自带的
public class ClassLeader implements Observer {
/**
* 班干部观察学生的上课纪律情况
*
* @param observable
* @param obj
*/
@Override
public void update(Observable observable, Object obj) {
System.out.println("班干部:观察到"+obj.toString()+",开始向老师汇报了...");
this.reportToTeacher(obj.toString());
System.out.println("班干部:报告完毕...");
}
/**
* 报告给老师
*
* @param reportContext
*/
private void reportToTeacher(String reportContext) {
System.out.println("班干部:报告老师!" + reportContext);
}
}
被观察者
Observable 接口也是使用JDK的原生定义的
public interface IStudent {
/**
* 学生名字
* @return
*/
String getName() ;
/**
* 吃零食
*/
void eatFood();
/**
* 上课聊天
*/
void chat();
}
public class ZhangSan extends Observable implements IStudent {
/**
* 学生名称
*
* @return
*/
@Override
public String getName() {
return "张三";
}
@Override
public void eatFood() {
System.out.println(this.getName()+":上课吃零食...");
/**
* 通知所有的观察者
*/
super.setChanged();
super.notifyObservers(this.getName()+"上课吃零食");
}
@Override
public void chat() {
System.out.println(this.getName()+":上课聊天、玩QQ...");
super.setChanged();
this.notifyObservers(this.getName()+"上课聊天、玩QQ");
}
}
test
public class Main {
public static void main(String[] args) {
//班干部
Observer classLadeLr = new ClassLeader();
ZhangSan zhangSan = new ZhangSan();
zhangSan.addObserver(classLadeLr);
zhangSan.chat();
zhangSan.eatFood();
}
}
运行效果
参考资料
书籍《设计模式之禅》
标签:耦合 load image rri pre nts @param rtt png
原文地址:https://www.cnblogs.com/tanoak/p/10662477.html