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. ztree树形菜单的增加删除修改和换图标

    首先需要注意一点,如果有研究过树形菜单,就会发现实现删除和修改功能特别简单,但是增加却有一点复杂.造成这个现象是ztree树形菜单的历史遗留问题.大概是之前的版本没有增加这个功能,后来的版本加上了这个 ...

  2. 从 Python 第三方进度条库 tqdm 谈起 (转载)

    原文地址: https://blog.ernest.me/post/python-progress-bar tqdm 最近一款新的进度条 tqdm 库比较热门,声称比老版的 python-progre ...

  3. C# 使用GZip对字符串压缩和解压

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  4. 【Quartz】Quartz将Job保存在数据库中所需表的说明

    QRTZ_CALENDARS 以 Blob 类型存储 Quartz 的 Calendar 信息 QRTZ_CRON_TRIGGERS 存储 Cron Trigger,包括 Cron表达式和时区信息  ...

  5. Struts2重学习之作用域的获取

    第一种:获取requestMap,sessionMap,applicationMap, HttpServletRequest,HttpServletResponse对象的获取,在Struts2中 pu ...

  6. ArrayList和LinkedList插入删除效率的测试(完全不在一个数量级8/20)

    通过index获取元素的值 java里面的链表可以添加索引,而C中的链表,是没有索引的 package ArrayListVSLinkedList; import java.util.ArrayLis ...

  7. Oracle中的三种Join 方式

    基本概念 Nested loop join: Outer table中的每一行与inner table中的相应记录join,类似一个嵌套的循环. Sort merge join: 将两个表排序,然后再 ...

  8. JUC原子类之 原子操作数据类型

    根据修改的数据类型,可以将JUC包中的原子操作类可以分为4类. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ; 数组类型: AtomicInteger ...

  9. C# ObjectArx AutoCAD二次开发(转帖)

    http://www.cnblogs.com/houlinbo/p/3325898.html 1.开发基本资料准备 用Vs2010进行Autocad 2010开发,首先下载ObjectArx 2010 ...

  10. java初始化块执行顺序

    java中初始化块的执行顺序在构造器之前,多个初始化块之间定义在前的先执行.如下: public class InitialBlockTest { // The first one { System. ...