一、好言
虽然留下深深遗憾,而你可以从此学会珍惜你周围的美好。
二、内容
2.1、大致流程如下:图片来源于该文章
image.png
2.2、案例
package com.mouse.autumn.other.event2;
import java.util.EventObject;
/**
* @Title: ButtonEvent
* @Package com.mouse.autumn.other.event2
* @Description: 事件
* @author Mahone Wu
* @date 2018/9/6 14:43
* @version V1.0
*/
public class ButtonEvent extends EventObject {
/**
* Constructs a prototypical ButtonEvent.
*
* @param source The object on which the ButtonEvent initially occurred.
* @throws IllegalArgumentException if source is null.
*/
public ButtonEvent(Object source) {
super(source);
}
private String operator;
public void controlSwitch(String operator){
this.operator = operator;
System.out.println("-----------" + operator);
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
}
package com.mouse.autumn.other.event2;
import java.util.Vector;
/**
* @Title: ButtonSource
* @Package com.mouse.autumn.other.event2
* @Description: 事件源
* @author Mahone Wu
* @date 2018/9/6 14:43
* @version V1.0
*/
public class ButtonSource {
Vector<Listener> vector = new Vector();
public void addListeners(Listener listener){
vector.add(listener);
}
public void modifyEvent(String operator){
notify(operator);
}
public void notify(String operator){
ButtonEvent event = new ButtonEvent(this);
event.controlSwitch(operator);
for (int i = 0 ; i < vector.size(); i++){
vector.get(i).listener(event);
}
}
}
package com.mouse.autumn.other.event2;
import java.util.EventListener;
/**
* @Title: Listener
* @Package com.mouse.autumn.other.event2
* @Description: 监听器
* @author Mahone Wu
* @date 2018/9/6 14:44
* @version V1.0
*/
public class Listener implements EventListener {
public void listener(ButtonEvent event){
System.out.println("做了什么操作 :" + event.getOperator());
}
}
package com.mouse.autumn.other.event2;
/**
* Created by Mahone Wu on 2018/9/6.
*/
public class Runner {
public static void main(String[] args) {
ButtonSource source = new ButtonSource();
Listener listener = new Listener();
source.addListeners(listener);
source.modifyEvent("open");
}
}
2.3、源码
在servlet中查找到类似使用场景,相关类如下:
HttpSessionEvent:事件
HttpSessionListener:监听器
AbstractSessionManager:事件源
image.png