21-1 观察者模式讲解




21-2 观察者模式coding
这个就是被观察者对象:
public class Course extends Observable {
private String courseName;
public Course(String courseName) {
this.courseName = courseName;
}
public String getCourseName() {
return courseName;
}
public void produceQuestion(Course course,Question question) {
System.out.println(question.getUserName()+"在"+course.getCourseName()+"提交了一个问题 ");
setChanged();
notifyObservers(question);
}
}
一个问题类:
public class Question {
private String userName;
private String questionContent;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getQuestionContent() {
return questionContent;
}
public void setQuestionContent(String questionContent) {
this.questionContent = questionContent;
}
}
还有一个观察者类:
public class Teacher implements Observer {
private String teacherName;
public Teacher(String teacherName) {
this.teacherName = teacherName;
}
@Override
public void update(Observable o, Object arg) {
Course course = (Course) o;
Question question = (Question) arg;
System.out.println(teacherName+"老师的"+course.getCourseName()+"课程接收到一个"+question.getUserName()+"同学提交的问答:"+question.getQuestionContent());
}
}
现在,我们来写上一个测试类:
public class Test {
public static void main(String[]args){
Course course = new Course("Java设计模式精讲");
Teacher teacher = new Teacher("Alpha");
course.addObserver(teacher);
//业务逻辑代码
Question question = new Question();
question.setUserName("ldc");
question.setQuestionContent("Java的主函数如何编写");
course.produceQuestion(course, question);
}
}
执行结果如下:
ldc在Java设计模式精讲提交了一个问题
Alpha老师的Java设计模式精讲课程接收到一个ldc同学提交的问答:Java的主函数如何编写
现在的类图为:这三个类就


21-3 观察者模式源码解析-jdk-guava

本文深入解析了观察者模式的原理与应用,通过具体案例展示了观察者模式在实际编程中的实现过程。包括被观察者对象、问题类及观察者类的设计与编码,最后通过一个测试类验证了模式的有效性。
680

被折叠的 条评论
为什么被折叠?



