javaWeb中的Listener中涉及到了監聽器模式,是以回來補充一下
1. 監聽器模式(Listener Pattern)
監聽器模式用來監聽某個對象發生的事件,當此對象發生被監聽的事件後,監聽器的某個方法将被執行,其主要組成有: 事件源,事件監聽器,事件對象
2. 流程
監聽器模式很簡單,直接看代碼就能了解,這裡舉例監聽小狗的玩和學習事件
2.1 事件對象
public class Event {
// 存放事件源的引用
Object object;
public Event(Object object) {
super();
this.object = object;
}
public Object getObject() {
return object;
}
}
2.2 事件監聽器
狗的監聽器接口
public interface DogListener {
public void playListener(Event event);
public void studyListener(Event event);
}
狗監聽器的實作類
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 事件源
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 測試類
public class test {
public static void main(String[] args) {
Dog dog = new Dog();
MyDogListener myDogListener = new MyDogListener();
dog.setDogListener(myDogListener);
dog.play();
dog.study();
}
}
Dog: i am playing
監聽器:監聽到listenerpatten.Dog在玩
Dog: i am studying
監聽器:監聽到listenerpatten.Dog在學習