事件处理机制
在传统的观察者模式中,事件及事件触发
事件,需要单独一个类。
事件触发,一般需要在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#中的事件处理机制,包括预定义事件处理、自定义事件以及事件处理的工作...