设计模式观察者模式
Posted 写Bug的渣渣高
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式观察者模式相关的知识,希望对你有一定的参考价值。
/**
* 继承Observer,就可以被观察
*/
public class Course extends Observable
private String courseName;
public String getCourseName()
return courseName;
public void setCourseName(String courseName)
this.courseName = courseName;
public Course(String courseName)
this.courseName = courseName;
public void produceQuestion(Course course,Question question)
System.out.println(question.getUserName()+" 在 "+course.courseName+"提出了一个问题");
setChanged();
// 以当前被观察者的名义去通知观察者,传递了一个qusetion对,在其他观察者中
notifyObservers(question);
public class Question
private String userName;
private String questionContent;
public Question()
public Question(String userName, String questionContent)
this.userName = userName;
this.questionContent = 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;
/**
*
* @param o: 被观察的对象,这里是课程
* @param arg:
*/
@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("Arpha");
// 给course添加一个观察者,之后,每当course调用 produceQuestion
course.addObserver(teacher);
// 业务逻辑代码
Question q = new Question();
q.setUserName("Ggzx");
q.setQuestionContent("Java的主函数如何编写");
course.produceQuestion(course,q);
输出:
Ggzx 在 Java 设计模式精讲提出了一个问题
Arpha 老师的 Java 设计模式精讲课程接收到一个GgzxJava的主函数如何编写
以上是关于设计模式观察者模式的主要内容,如果未能解决你的问题,请参考以下文章