模拟“事件监听器”(二)
来源:互联网 发布:快捷矩阵 编辑:程序博客网 时间:2024/06/06 14:19
1、定义一个事件类
package hb.event;public class Event {private EventType type; private int nodeID; private boolean processed; public Event(EventType type, int oldNodeID) { this.type = type; this.nodeID = oldNodeID; } public EventType getType() { return type; } public int getNodeID() {return nodeID;}public void setNodeID(int nodeID) {this.nodeID = nodeID;}public void setType(EventType type) {this.type = type;}public boolean isProcessed() { return processed; } public void setProcessed(boolean processed) { this.processed = processed; } @Overridepublic String toString() { return super.toString() + " type: " + type; } public static enum EventType { /** * This JVM joined a cluster. */ receive, /** * This JVM is no longer part of the cluster. */ send, }}
2、定义一个监听接口
package hb.event;public interface EventListener {public void action(Event event);}
3、添加两个监听接口实现类
package hb.event;public class ReceiveEventListener implements EventListener {private Event event;@Overridepublic void action(Event event) {// TODO Auto-generated method stubSystem.out.println("ReceiveEventListener");}public ReceiveEventListener(Event event){this.event = event;}public ReceiveEventListener(){}}
package hb.event;public class SendEventListener implements EventListener {private Event event;@Overridepublic void action(Event event) {// TODO Auto-generated method stubSystem.out.println("SendEventListener");}public SendEventListener(Event event) {this.event = event;}public SendEventListener() {}}
4、定义一个事件源(即监听事件的目标)
package hb.event;import java.util.HashMap;import java.util.Map;public class Resource {Map<Event.EventType,EventListener> map = new HashMap<Event.EventType,EventListener>();public void addListener(Event.EventType eventType,EventListener eventListener){map.put(eventType, eventListener);}public void removeListener(Event.EventType eventType){map.remove(eventType);}public void sendAction(Event event){EventListener eventListener = (EventListener)map.get(Event.EventType.send);if(eventListener!=null){eventListener.action(event);}}public void receiveAction(Event event){EventListener eventListener = (EventListener)map.get(Event.EventType.receive);if(eventListener!=null){eventListener.action(event);}}}
5、测试类
package hb.event;public class EventTest {public static void main(String[] args) {Resource resource = new Resource();ReceiveEventListener receiveListener = new ReceiveEventListener();SendEventListener sendListener = new SendEventListener();resource.addListener(Event.EventType.receive, sendListener);resource.addListener(Event.EventType.send, sendListener);Event sendevent = new Event(Event.EventType.send,1);Event receiveevent = new Event(Event.EventType.receive,2);resource.sendAction(sendevent);resource.receiveAction(receiveevent);}}
- 模拟“事件监听器”(二)
- 模拟“事件监听器”(一)
- Java学习笔记(二)事件监听器
- Servlet事件监听器(二)
- Spring Boot启动过程源码分析(二)事件监听器
- Android 模拟系统事件(二)
- Android 模拟系统事件(二)
- Tomcat 8.x 《应用》,监听器(生命周期监听器、事件监听器)
- JSP&Servlet5(二) --- 应用程序事件 监听器
- java监听器用法(二):窗口监听器
- Servlet事件监听器(1)
- Servlet事件监听器(2)
- 事件监听器
- 事件监听器
- 事件监听器
- 事件监听器
- 事件监听器
- 事件监听器
- 格式化table长度
- listview 点击的第一个 是1 不是从0开始的
- webservcie生成客户端代码报错----javax.xml.ws.soap.SOAPFaultException: Cannot create a sec
- boa流程分析
- openfire 使用其他数据库的用户
- 模拟“事件监听器”(二)
- Telnet客户端的基础介绍
- cxf 拦截器入门
- cxf 发布多个接口的方法
- iterator的方法 :hashNext()与next()
- webservice 发布的接口不能使“多态”
- excel中怎么使除了内容以外的单元格,变成没有格,成白色空白
- notepad++不自动更新设置
- tipswindow 控件学习(弹出效果)