1. 监听器模式(Listener Pattern)
监听器模式用来监听某个对象发生的事件,当此对象发生被监听的事件后,监听器的某个方法将被执行,其主要组成有: 事件源,事件监听器,事件对象
2. 流程
监听器模式很简单,直接看代码就能理解,这里举例监听小狗的玩和学习事件
2.1 事件对象
代码语言:javascript复制public class Event {
// 存放事件源的引用
Object object;
public Event(Object object) {
super();
this.object = object;
}
public Object getObject() {
return object;
}
}
2.2 事件监听器
狗的监听器接口
代码语言:javascript复制public interface DogListener {
public void playListener(Event event);
public void studyListener(Event event);
}
狗监听器的实现类
代码语言:javascript复制package listenerpatten;
public class MyDogListener implements DogListener {
@Override
public void playListener(Event event) {
System.out.println("监听器:监听到" event.getObject().getClass().getName() "在玩");
}
@Override
public void studyListener(Event event) {
System.out.println("监听器:监听到" event.getObject().getClass().getName() "在学习");
}
}
2.3 事件源
代码语言:javascript复制public class Dog {
private MyDogListener myDogListener;
public void setDogListener(MyDogListener myDogListener) {
this.myDogListener = myDogListener;
}
public void play(){
System.out.println("Dog: i am playing");
Event event = new Event(this);
myDogListener.playListener(event);
}
public void study(){
System.out.println("Dog: i am studying");
Event event = new Event(this);
myDogListener.studyListener(event);
}
}
2.4 测试类
代码语言:javascript复制public class test {
public static void main(String[] args) {
Dog dog = new Dog();
MyDogListener myDogListener = new MyDogListener();
dog.setDogListener(myDogListener);
dog.play();
dog.study();
}
}
代码语言:javascript复制Dog: i am playing
监听器:监听到listenerpatten.Dog在玩
Dog: i am studying
监听器:监听到listenerpatten.Dog在学习