java自定义事件机制分析
import java.util.ArrayList;
import java.util.EventListener;
import java.util.EventObject;
import java.util.List; /**
* 测试自定义事件
* @author Administrator
*
*/
public class EventTest { /**
* 自定义的一个事件对象
* @author Administrator
*
*/
static class MyEvent extends EventObject { private String eventName; public MyEvent(String eventName) {
super(eventName);
this.eventName = eventName;
}
} /**
* 自定义的事件的监听器
* @author Administrator
*
*/
static class MyEventListenor implements EventListener { public String fireEvent(EventObject event ) { String result = ""; doHanndler(event); return result;
} private void doHanndler(EventObject event) {
System.out.println(event.toString());
}
} /**
* 自定义的事件源
* @author Administrator
*
*/
static class MySysUI { private String name; /*事件监听器**/
private List<EventListener> listerors = new ArrayList<EventListener>(); public MySysUI(String name ) {
this.name = name;
} /**
* 添加事件监听器
* @param listener
*/
public void addEventListeror(EventListener listener) {
listerors.add(listener);
} /**
* 触发业务事件
* @param params
*/
private void fireEvent(String params) {
System.out.println("fireEvent");
eventNotify(params);
} private void eventNotify(String params) {
for (EventListener eventListener : listerors) {
MyEventListenor eventListenerOther = (MyEventListenor)eventListener; EventObject event = new EventObject(params); eventListenerOther.fireEvent(event );
}
} /**
* 业务处理,事件触发对用户来说,无所谓触发什么事件,他们只需完成业务自己的业务即可,里面触发时间业务事件
* @param prams
*/
public void doService(String... prams) { //用户处理自己该做的业务 doDealService(); fireEvent("触发doService业务事件"); } } /**
* 入口程序
* @param args
*/
public static void main(String[] args) { MySysUI mySysUI = new MySysUI("EventSource UI"); EventListener listeror = new MyEventListenor(); mySysUI.addEventListeror(listeror ); mySysUI.doService("执行业务");
} } 一点感悟:
1.本质就是一种观察者模式的实现,是我们自定义业务组件的一直开发思想,结合事件机制进行通信
2.匿名内部类就是一种挂接的扩展接口,有业务使用直接扩展即可,就是接口回调机制 HOOK机制,编程方式比较好,自己去写实现,不破坏整个业务处理的流程机制
java自定义事件机制分析的更多相关文章
- Java 类反射机制分析
Java 类反射机制分析 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.在计算机科学领域,反射是一类应用,它们能够自描述和自控制.这类应用通过某 ...
- Java 动态代理机制分析及扩展
Java 动态代理机制分析及扩展,第 1 部分 王 忠平, 软件工程师, IBM 何 平, 软件工程师, IBM 简介: 本文通过分析 Java 动态代理的机制和特点,解读动态代理类的源代码,并且模拟 ...
- Java 动态代理机制分析及扩展,第 1 部分
Java 动态代理机制分析及扩展,第 1 部分 http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/ 本文通过分析 Java 动态代理的机制和特 ...
- [转]Java 动态代理机制分析及扩展
引言 Java 动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类.代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执 ...
- Java 动态代理机制分析及扩展--转
http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/#icomments http://www.ibm.com/developerworks/c ...
- Java实现事件机制
java中的事件机制的参与者有3种角色: 1.event object:事件状态对象,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中 2.event sourc ...
- es6 Promise 事件机制分析
最近在学习es6的Promise,其中涉及到了Promsie的事件执行机制,因此总结了关于Promise的执行机制,若有错误,欢迎纠错和讨论. 在阮一峰老师的书中<es6 标准入门>对Pr ...
- Java垃圾回收机制分析
Java的堆是一个运行时数据区,类的实例从中分配空间,堆中存储着正在运行的应用程序所建立的所有对象.垃圾回收是一种动态存储管理技术.它按照特定的垃圾回收算法,自动释放掉不再被引用的对象.堆内存里垃圾的 ...
- 许令波老师的java的IO机制分析文章
深入分析 Java I/O 的工作机制 I/O 问题可以说是当今互联网 Web 应用中所面临的主要问题之一,因为当前在这个海量数据时代,数据在网络中随处流动.这个流动的过程中都涉及到 I/O 问题,可 ...
随机推荐
- 【Genymotion】add a new virtual device 失败
Genymotion 新增虚拟设备(模拟器)时,由于网络原因,总是下载失败,如图: 下载失败提示“Unable to create virtual device: Connection timeout ...
- QAV250四轴穿越机安装全程详解(多图)
QAV250四轴穿越机安装全程详解 最近团队准备使用轻型穿越机QAV250做实验,本文记录了QAV250的安装过程,整理了开箱后较合理的安装顺序,以及各个步骤的注意事项,希望对有需要的朋友有所帮助.主 ...
- 前端开发 —— js 常用工具函数(utilities)
1. 时间 function getCurTime() { var date = new Date(); return date.toLocaleTimeString(); } date.toLoca ...
- Adaboost新理解
Adaboost有几个难点: 1.弱分类器的权重怎么理解? 误差大的弱分类器权重小,误差小的弱分类器权重大.这很好理解.在台湾大学林轩田老师的视频中,推导说,这个权值实际上貌似梯度下降,权值定义成1/ ...
- I.MX6 OTG set as slave device hacking
/****************************************************************************** * IMX6 OTG set as sl ...
- 【linux】wifi不能使用的问题
Worked solution (Requirements: kernel >=4.11) : Download driver directory from this repo:https:// ...
- 打乱一个文件 shuf
$ shuf --help 用法: shuf [选项]... [文件] 或者: shuf -e [选项]... [参数]... 或者: shuf -i LO-HI [选项]... 把输入行按随机顺序输 ...
- Windows10 解决 “/”应用程序中的服务器错误
部署 ASP.NET MVC5程序时,访问网站出现 未能加载文件或程序集“698_BLL”或它的某一个依赖项.试图加载格式不正确的程序. ================= 解决办法: 1.打开IIS ...
- Let the Balloon Rise map一个数组
Contest time again! How excited it is to see balloons floating around. But to tell you a secret, the ...
- 使用animate()完成修改图片src切换图片的动画效果
如下所示,在动画效果中的回调函数中进行src的修改和动画的切换 $(".TopImg").animate( {opacity:'toggle'}, "slow" ...