设计模式之观察者模式(observable)
观察者模式
案例
论坛提问
提问者
public class Questioner extends Observable {
private static Questioner questioner;
private Questioner(){}
public static Questioner getInstance(){
if(null == questioner){
questioner = new Questioner();
}
return questioner;
}
public void releaseQuestion(Question question){
System.out.println("发布问题");
setChanged();
notifyObservers(question);
}
}
问题实体类
public class Question {
private String username;
private String content;
// get/set
}
回答者
public class Responder implements Observer {
private String name;
public Responder(String name) {
this.name = name;
}
@Override
public void update(Observable o, Object arg) {
Questioner questioner = (Questioner) o;
Question question = (Question) arg;
System.out.println("接收"+question.getUsername()+"的提问:\n");
System.out.println("问题:"+question.getContent());
}
}
Main
public class Main {
public static void main(String[] args) {
// 创建提问者
Questioner questioner = Questioner.getInstance();
// 创建回答者
Responder responder = new Responder("glo6f");
// 创建问题
Question question = new Question();
question.setUsername("luck");
question.setContent("设计模式都有哪些");
// 相当于@glo6f,订阅回答者
questioner.addObserver(responder);
// 发布问题
questioner.releaseQuestion(question);
}
}
应用
spring监听模块
设计模式之观察者模式(observable)
https://www.blaaair.com/archives/she-ji-mo-shi-zhi-guan-cha-zhe-mo-shi-observable