事件监听以及事件触发的简单实现流程

package demo; public class Demo2 { public static void main(String[] args) { //创建被监听的类 Student student=new Student(); //给目标对象添加监听 student.addStudentListener(new StudentListener() { @Override public void doStudy(Event e) { //重写监听的方法 System.out.println("监听是否学习................"+e.getStudent()); } @Override public void doChangeName(Event e) { System.out.println("当改变属性name时................"+e.getStudent().getName()); } }); student.study(); student.setName("donghongyujava"); } }// 被监听的类, 事件源 class Student { // student的属性 private String name; // 监听的对象, private StudentListener studentListener; // 类中被监听的方法 public void study() { // 判断是否注册了监听 if (studentListener != null) { Event e = new Event(); e.setStudent(this); //调用接口中的dostudy方法 studentListener.doStudy(e); } } public String getName() { return name; } public void setName(String name) { this.name = name; if(studentListener!=null){ Event e=new Event(); e.setStudent(this); studentListener.doChangeName(e); } } //注册监听对象 public void addStudentListener(StudentListener studentListener){ this.studentListener=studentListener; } }// 监听者,,监听器 interface StudentListener { // 被监听后要做的是什么 // 并注册事件 public void doStudy(Event e); // 当名字被改变的事件处理 public void doChangeName(Event e); } // 事件的处理类 class Event { // 创建需要处理事件的目标类 private Student student; // 事件处理方法 // 返回被处理事件的类 public Student getStudent() { return student; } // 为被处理事件的类进行赋值的操作 public void setStudent(Student student) { this.student = student; } }


    推荐阅读