事件处理机制
在传统的观察者模式中,事件及事件触发
事件,需要单独一个类。
事件触发,一般需要在client手动进行触发,执行notify的方法
在jbpm中,fire(Event.END,xx,XX)
含义是 系统执行到这个地方,自动触发一个事件,这个与 在观察者中的,在client,手段执行一个notify()的动作是一样的。
触发这个动作,目的是执行一个list<> 观察者的列表方法,在jbpm中,没有这个数组,仅执行一个Eventlister类这样的一个perform动作。在这个动作中,读取xml中类名与事件的关系,然后判断是否是这个事件类型的,如果是,就执行这个事件处理类,否则忽略。
在设计模式之禅中
createproduct在这个方法最好,触发一个事件,该事件处理方法就放入到该事件中去了,在该事件的构造函数中,执行一个通知。
在jbpm中,是有一个Event.End这个事件,然后单独一个Fire方法。单在设计之禅中,fire这个动作中,就调用了事件本身的notify内容。
在dom解析xml时候,事件要登记在builder中,便于更友好的跟踪这个解析出错结果。
DocumentBuilder可以注册一个Errohandle(SAXparseException),在执行documentBuilder.parse时候,会触发这个Errohandle(SAXparseException).
猜想它的处理方式如下
DocumentBuilder{
private Errohandle;
get;set Errohandle;
public void parse(File file)
{
try{
parsedoing();
}
catch{
if(Errohandle!=null)//因为这个类,可能并不调用setErrohandle方法,即并不触发事件
{
Errohandle.error(SAXparseException);
Errohandle.FetalError(SAXparseException);
Errohandle.warning(SAXparseException);
}
}
}
}
事件:SAXparseException
事件触发,parse方法
事件处理Errohandle(观察者)
Errohandle使一个接口,可作为一个匿名类在调用的时候,在client端进行书写,这样就可以方便的重定义错误的处理方式。
http://www.oschina.net/code/explore/jdk16/javax/xml/parsers/DocumentBuilderFactory.java
在jdk的jar包中package javax.xml.parsers; DocumentBuilderFactory是一个抽象类
public static DocumentBuilderFactory newInstance() {
122 try {
123 return (DocumentBuilderFactory) FactoryFinder.find(
124 /** The default property name according to the JAXP spec */
125 "javax.xml.parsers.DocumentBuilderFactory",
126 /** The fallback implementation class name */
127 "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
128 } catch (FactoryFinder.ConfigurationError e) {
129 throw new FactoryConfigurationError(e.getException(),
130 e.getMessage());
131 }
132
133 }
134
其实现在如下代码中
http://www.oschina.net/code/search?q=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
针对sax解析方式,也有2种。一种是xmlreader的解析方式,另外一种是saxreader的解析方式
在xmlreader解析方式下
要设置4个监听器,每个监听器有2-4个方法。估计在parse的时候,会对3个监听器要依次调用,调用的时候,估计就是把几个监听器的方法采用switch语句在parse中根据input的内容进行解析,如果碰到开始等就调用监听程序。缺点就是以后无法添加新的监听器了。因为无公开的添加监听器的方法。估计的原因是不需要扩展监听器,因为xml的结构是恒定的。
在saxreader的解析器下
只要设置一个defaulthandle继承这4个接口。然后传入到parse中,在parse中的步骤应该是一样的。
这种方式与传统的观察者差异性在与,以前的观察者一般是一个update的方法。现在的观察者可能是多个方法。根据调用者不同的情况下,触发观察者的方法。
另外需要查一下,javax.xml;与org.xml的package分别是什么?要引用的时候放入哪些jar包中
下午
看到dom4j采用的visitor模式
在element继承一个接口。该接口有一个accept方法
accept(ivistor)
{
ivisitor.visit(this)
}
在每一个visitor中,有每个具体的elecment作为visit参数。这样就可以访问在element之外对每个元素进行单独处理。
具体的描述在疯狂xml讲义 P342
可参考http://blog.sina.com.cn/s/blog_636415010100vabc.html类图及解释
观察者模式,访问者模式
观察者模式中,每个观察者是一个方法
访问者模式是将多个观察者的1个方法合并在一个类中,行程多个方法。然后通过双委派的方式来执行。启动这个观察事件的是,在element中执行accept(ivistor)的方法。这样多个观察者单体方法组成的visitor就好根据this的内容进行选择性执行那个方法。
分享到:
相关推荐
Android事件处理机制
IOS 事件处理机制详解 IOS 事件处理机制是 IOS 系统中的一种机制,用于处理用户与设备的交互操作。该机制主要包括事件类型、事件触发机制、事件传递等几个方面。 事件类型 IOS 中的事件类型主要有三种:点击事件、...
Java事件处理机制是Java编程中一个关键的概念,它主要用于用户界面(UI)应用程序,使得程序能够响应用户的操作,如点击按钮、选择菜单项等。在Java中,事件处理主要涉及三个核心组件:事件源(Event Source)、事件...
Java GUI事件处理机制是Java应用程序开发中的重要组成部分,主要用于响应用户在图形用户界面中的各种操作。这一机制采用了委托事件模型,使得程序结构清晰,易于扩展。下面将详细讲解这一机制的关键概念、工作流程...
### QT的事件处理机制 #### 一、概述 在探讨QT的事件处理机制之前,我们需要先理解事件在软件开发中的重要性。事件是程序与用户的交互桥梁,它们能够捕获用户的动作并触发相应的处理逻辑。在图形用户界面(GUI)应用...
Java事件处理机制是Java GUI编程中的重要组成部分,它允许用户与图形界面进行交互。在Java中,事件处理涉及事件源(Event Source)、事件(Event)和事件监听器(Event Listener)。当用户执行某个操作,如点击按钮...
在Java编程语言中,事件处理机制是构建图形用户界面(GUI)交互功能的核心技术。理解这一机制对于编程人员而言至关重要,因为它涉及到程序如何响应用户的操作。为了让初学者更好理解Java事件处理机制及其编程技术,黄...
为了保障企业的正常运行,维护利益相关者的权益,深圳市汇川技术股份有限公司制定了一套完备的突发事件处理制度。该制度不仅是预防和应对风险的重要保障,更是企业社会责任的体现。 突发事件处理制度遵循预防为主,...
### Java GUI 编程中的事件处理机制详细讲解 在Java GUI编程中,事件处理机制是构建用户界面交互的核心部分。本文将围绕“Java GUI编程中的事件处理机制详细讲解(1)”这一主题展开,深入探讨组件类事件、动作类...
Java事件处理机制是Java GUI编程中的核心组成部分,它允许程序响应用户的交互操作,如点击按钮、选择菜单项等。在Java中,事件处理主要涉及三个关键角色:事件对象(Event Object)、事件源(Event Source)和事件...
Java事件处理机制是Java编程中一个重要的组成部分,它主要用于实现用户界面(UI)与应用程序逻辑之间的交互。在Java中,事件处理主要涉及到事件源、事件和事件监听器。本示例"java事件处理机制Demo"将深入探讨Java的...
在Android应用程序中,有一类...这个PPT讲Android应用程序输入事件的分发和处理过程,主要涉及到输入管理InputManager、输入事件监控线程InputReader、输入事件分发线程InputDispatcher,以及应用程序主线程消息循环。
食品安全事故处理制度.pdf
JavaScript中的事件处理机制涉及到事件的产生、事件监听器的绑定、事件对象的处理,以及事件冒泡行为。事件是在特定的DOM节点上发生的交互行为,如鼠标点击、按键事件或页面加载完成。绑定事件处理代码是指将特定的...
Java事件处理机制是一种用于在组件之间传递和处理事件的机制,它是GUI编程中不可或缺的一部分。在Java中,事件处理涉及到三个关键角色:事件对象(Event Object)、事件源(Event Source)和事件监听器(Event ...
在C#编程中,事件处理机制是面向对象设计的一个重要组成部分,它允许对象之间通过事件进行通信,而不必知道彼此的实现细节。本文将深入探讨C#中的事件处理机制,包括预定义事件处理、自定义事件以及事件处理的工作...