mirror of
https://github.com/Estom/notes.git
synced 2026-02-04 11:04:21 +08:00
Java内容重新整理删除过期的东西
This commit is contained in:
38
Java/JavaDemo/codedemo/eventdriver_improve/ClientMain.java
Normal file
38
Java/JavaDemo/codedemo/eventdriver_improve/ClientMain.java
Normal file
@@ -0,0 +1,38 @@
|
||||
package cn.aofeng.demo.eventdriver_improve;
|
||||
/**
|
||||
* 事件驱动调用示例
|
||||
* @author 聂勇 <a href="mailto:aofengblog@163.com">aofengblog@163.com</a>
|
||||
*/
|
||||
public class ClientMain {
|
||||
|
||||
public static void main(String[] args) {
|
||||
EventManagement eventManagement = new EventManagement();
|
||||
eventManagement.addListener("read", new HelloWorldListener());
|
||||
eventManagement.addListener("write", new SimpleListener());
|
||||
|
||||
EventSource eventSource = new EventSource(eventManagement);
|
||||
eventSource.fire(new Event("read", "this is a read event"));
|
||||
eventSource.fire(new Event("write", "this is a write event"));
|
||||
}
|
||||
|
||||
public static class HelloWorldListener implements EventListener {
|
||||
|
||||
@Override
|
||||
public void execute(Event event) {
|
||||
System.out.println("监听器:"+this + "接收到事件,事件类型是:"
|
||||
+ event.getEventType() + ", 事件附带的数据:" + event.getData());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class SimpleListener implements EventListener {
|
||||
|
||||
@Override
|
||||
public void execute(Event event) {
|
||||
System.out.println("监听器:"+this + "接收到事件,事件类型是:"
|
||||
+ event.getEventType() + ", 事件附带的数据:" + event.getData());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
28
Java/JavaDemo/codedemo/eventdriver_improve/Event.java
Normal file
28
Java/JavaDemo/codedemo/eventdriver_improve/Event.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package cn.aofeng.demo.eventdriver_improve;
|
||||
/**
|
||||
* 事件
|
||||
*
|
||||
* @author aofeng <aofengblog@163.com>
|
||||
*/
|
||||
public class Event {
|
||||
|
||||
// 事件附带的数据
|
||||
private Object data;
|
||||
|
||||
// 事件类型
|
||||
private String eventType;
|
||||
|
||||
public Event(String eventType, Object obj){
|
||||
this.eventType = eventType;
|
||||
this.data = obj;
|
||||
}
|
||||
|
||||
public Object getData() {
|
||||
return this.data;
|
||||
}
|
||||
|
||||
public String getEventType() {
|
||||
return this.eventType;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package cn.aofeng.demo.eventdriver_improve;
|
||||
/**
|
||||
* 事件监听器(监听一个或多个事件并进行具体的处理)
|
||||
*
|
||||
* @author aofeng <aofengblog@163.com>
|
||||
*/
|
||||
public interface EventListener {
|
||||
|
||||
/**
|
||||
* 处理事件
|
||||
*
|
||||
* @param event 事件
|
||||
*/
|
||||
public void execute(Event event);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package cn.aofeng.demo.eventdriver_improve;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 事件管理器。负责
|
||||
*
|
||||
* @author aofeng <aofengblog@163.com>
|
||||
*/
|
||||
public class EventManagement {
|
||||
|
||||
private Map<String, List<EventListener>> map = new HashMap<String, List<EventListener>>();
|
||||
|
||||
public EventManagement(){
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 向指定事件添加一个监听器
|
||||
*
|
||||
* @param eventType 事件类型
|
||||
* @param listener 事件监听器
|
||||
* @return 添加成功返回true;添加失败返回false
|
||||
*/
|
||||
public boolean addListener(String eventType, EventListener listener){
|
||||
List<EventListener> listeners = map.get(eventType);
|
||||
if (null == listeners) {
|
||||
listeners = new ArrayList<EventListener>();
|
||||
}
|
||||
boolean result = listeners.add(listener);
|
||||
map.put(eventType, listeners);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 移除事件的某一个监听器
|
||||
*
|
||||
* @param eventType 事件类型
|
||||
* @param listener 事件监听器
|
||||
* @return 移除成功返回true;移除失败返回false
|
||||
*/
|
||||
public boolean removeListener(String eventType, EventListener listener){
|
||||
List<EventListener> listeners = map.get(eventType);
|
||||
if (null != listeners) {
|
||||
return listeners.remove(listener);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定事件的监听器
|
||||
*
|
||||
* @param eventType 事件类型
|
||||
* @return 如果指定的事件没有监听器返回null;否则返回监听器列表
|
||||
*/
|
||||
public List<EventListener> getEventListeners(String eventType) {
|
||||
return map.get(eventType);
|
||||
}
|
||||
|
||||
}
|
||||
38
Java/JavaDemo/codedemo/eventdriver_improve/EventSource.java
Normal file
38
Java/JavaDemo/codedemo/eventdriver_improve/EventSource.java
Normal file
@@ -0,0 +1,38 @@
|
||||
package cn.aofeng.demo.eventdriver_improve;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 事件源(事件发送者)
|
||||
*
|
||||
* @author aofeng <aofengblog@163.com>
|
||||
*/
|
||||
public class EventSource {
|
||||
|
||||
// 事件管理器
|
||||
private EventManagement eventManagement;;
|
||||
|
||||
public EventSource(EventManagement eventManagement){
|
||||
this.eventManagement = eventManagement;
|
||||
}
|
||||
|
||||
/**
|
||||
* 派发事件
|
||||
*
|
||||
* @param data 事件
|
||||
*/
|
||||
public void fire(Event event) {
|
||||
if (null == event) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<EventListener> listeners = eventManagement.getEventListeners(event.getEventType());
|
||||
if (null == listeners) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (EventListener listener : listeners) {
|
||||
listener.execute(event);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user