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自定义事件机制分析的更多相关文章

  1. Java 类反射机制分析

    Java 类反射机制分析 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.在计算机科学领域,反射是一类应用,它们能够自描述和自控制.这类应用通过某 ...

  2. Java 动态代理机制分析及扩展

    Java 动态代理机制分析及扩展,第 1 部分 王 忠平, 软件工程师, IBM 何 平, 软件工程师, IBM 简介: 本文通过分析 Java 动态代理的机制和特点,解读动态代理类的源代码,并且模拟 ...

  3. Java 动态代理机制分析及扩展,第 1 部分

    Java 动态代理机制分析及扩展,第 1 部分 http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/ 本文通过分析 Java 动态代理的机制和特 ...

  4. [转]Java 动态代理机制分析及扩展

    引言 Java 动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类.代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执 ...

  5. Java 动态代理机制分析及扩展--转

    http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/#icomments http://www.ibm.com/developerworks/c ...

  6. Java实现事件机制

    java中的事件机制的参与者有3种角色: 1.event object:事件状态对象,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中 2.event sourc ...

  7. es6 Promise 事件机制分析

    最近在学习es6的Promise,其中涉及到了Promsie的事件执行机制,因此总结了关于Promise的执行机制,若有错误,欢迎纠错和讨论. 在阮一峰老师的书中<es6 标准入门>对Pr ...

  8. Java垃圾回收机制分析

    Java的堆是一个运行时数据区,类的实例从中分配空间,堆中存储着正在运行的应用程序所建立的所有对象.垃圾回收是一种动态存储管理技术.它按照特定的垃圾回收算法,自动释放掉不再被引用的对象.堆内存里垃圾的 ...

  9. 许令波老师的java的IO机制分析文章

    深入分析 Java I/O 的工作机制 I/O 问题可以说是当今互联网 Web 应用中所面临的主要问题之一,因为当前在这个海量数据时代,数据在网络中随处流动.这个流动的过程中都涉及到 I/O 问题,可 ...

随机推荐

  1. prop和state的区别

    1.prop用于定义外部接口,state用于记录内部状态: 2.prop的赋值在外部世界使用组件时,state的赋值在组件内部: 3.组件不应该改变prop的值,但是state的存在目的就是让组件来改 ...

  2. ReactNative——UI1.登录界面样式设置

    使用React 基本组件结合flex 属性,实现简单登录布局UI 效果 效果预览:

  3. 为iOS设计:图形和性能

    在之前的文章里,我们探讨了基于多种不同技术来实现自定义的UIButton,当然不同的技术所涉及到的代码复杂度和难度也不一样.但是我也有意提到了基于不同方法的实现所体现出的性能表现也不一一相同. [在屏 ...

  4. magento优化

    magento -- SEO优化继续往前走一步 magento的SEO做的实在太好了,让其它的电子商务平台与之相比实在是不是一个重级的,这也许就是magento成功的原因.尽管现在结合apache,实 ...

  5. Mac锁屏快捷键

    Mac 锁屏快捷键 直接盖 -- 推荐,因为帅 control + command + Q -- 真正意义上的锁屏.可行 control + shift + Power -- 只是黑屏,再次打开不需要 ...

  6. C# [ModelName]标记 模型,类名称重复。

    前几天遇到一个不算bug的bug  记录分享一下  出错情况 webapi  程序会自带一个模板  如图 点某一个接口进去后     出错原因      model实体中出现了名称一样的(并不会影响程 ...

  7. 模板引擎jade学习

    语言参考 标签列表 doctype Tags Block Expansion Attributes Boolean Attributes Class Attributes Class Literal ...

  8. Linux 安装Jdk、mysql、apache、php、tomcat、nginx

    Jdk 安装分三步:第一步,上传跟 linux 位数相同的 jdk tar 包,解压:第二步:解压 tar 包,配置环境变量,且 source 一下 /etc/profile:第三步:检查版本 第一步 ...

  9. 检索关键字 nyoj

    检索关键字 时间限制: 1000ms 内存限制: 65536KB 64位整型:      Java 类名: 上一题 提交 运行结果 统计 讨论版 下一题 类型: 没有   没有   难度        ...

  10. openwrt lamp

    https://applefreak111.wordpress.com/2013/03/12/howtoopenwrt-lamp-stack%E5%AE%89%E8%A3%9D/ opkg updat ...