Java中的DEM事件机制
AWT中的DEM机制
责任链模式一章中曾谈到,AWT1.0的事件处理的模型是基于责任链的。这种模型不适用于复杂的系统,因此在AWT1.1版本及以后的各个版本中,事件处理模型均为基于观察者模式的委派事件模型(Delegation Event Model或DEM)。
在DEM模型里面,主题(Subject)角色负责发布(publish)事件,而观察者角色向特定的主题订阅(subscribe)它所感兴趣的事件。当一个具体主题产生一个事件时,它就会通知所有感兴趣的订阅者。
使用这种发布-订阅机制的基本设计目标,是提供一种将发布者与订阅者松散地耦合在一起的联系形式,以及一种能够动态地登记、取消向一个发布者的订阅请求的办法。显然,实现这一构思的技巧,是设计抽象接口,并把抽象层和具体层分开。这在观察者模式里可以清楚地看到。
使用DEM的用词,发布者叫做事件源(event source),而订阅者叫做事件聆听者(event listener)。在Java里面,事件由类代表,事件的发布是通过同步地调用成员方法做到的。
Servlet技术中的的DEM机制
AWT中所使用的DEM事件模型实际上被应用到了所有的Java事件机制上。Servlet技术中的事件处理机制同样也是使用的DEM模型。
SAX2技术中的DEM机制
DEM事件模型也被应用到了SAX2的事件处理机制上。
观察者模式的效果
观察者模式的效果有以下的优点:
第一、观察者模式在被观察者和观察者之间建立一个抽象的耦合。被观察者角色所知道的只是一个具体观察者列表,每一个具体观察者都符合一个抽象观察者的接口。被观察者并不认识任何一个具体观察者,它只知道它们都有一个共同的接口。
由于被观察者和观察者没有紧密地耦合在一起,因此它们可以属于不同的抽象化层次。如果被观察者和观察者都被扔到一起,那么这个对象必然跨越抽象化和具体化层次。
第二、观察者模式支持广播通讯。被观察者会向所有的登记过的观察者发出通知,
观察者模式有下面的缺点:
第一、如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。
第二、如果在被观察者之间有循环依赖的话,被观察者会触发它们之间进行循环调用,导致系统崩溃。在使用观察者模式是要特别注意这一点。
第三、如果对观察者的通知是通过另外的线程进行异步投递的话,系统必须保证投递是以自恰的方式进行的。
第四、虽然观察者模式可以随时使观察者知道所观察的对象发生了变化,但是观察者模式没有相应的机制使观察者知道所观察的对象是怎么发生变化的。
观察者模式与其它模式的关系
观察者模式使用了备忘录模式(Memento Pattern)暂时将观察者对象存储在被观察者对象里面。
问答题
第一题、我和妹妹跟妈妈说:“妈妈,我和妹妹在院子里玩;饭做好了叫我们一声。”请问这是什么模式?能否给出类图说明?
问答题答案
第一题答案、这是观察者模式。我和妹妹让妈妈告诉我们饭做好了,这样我们就可以来吃饭了。换用较为技术化的语言来说,当系统的主题(饭)发生变化时,就告诉系统的其它部份(观察者们,也就是妈妈、我和妹妹),使其可以调整内部状态(有开始吃饭的准备),并采取相应的行动(吃饭)。
系统的类图说明如下:
系统的类图
来源:http://www.yesky.com/140/1614140_3.shtml
分享到:
相关推荐
USGS数字高程模型(DEM)的3d可视化。 支持立体可视化。 用Java和Java3D编写
DEM岩石物理建模 自己编写的 有什么问题可以留言交流
完整能运行的java AES源代码,需要官网手工下载local_policy.jar 和 US_export_policy.jar文件覆盖java安装目录的文件,才能使用CFB模式。下载地址为: ...
本文详细介绍了在Arcgis中如何制作dem的过程
DEM裁切,在实际应用单中,有可能需要一小部分的dem数据,所以进行裁剪
1、加深对DEM建立过程的原理、方法的认识; 2、熟练掌握ARCVIEW中建立DEM、TIN的技术方法。 3、结合实际、掌握应用DEM解决地学空间分析问题的能力。
Rocky DEM[cfd-dem]案例。注意:此文档只有案例结果,并没有详细做法过程,更没有模型文件。
福建师范大学地理科学学院DEM数字高程模型课堂实验报告_探讨分辨率与中误差的关系。
如何将从地理空间数据云下载的DEM(TIF格式)转换成GRID格式的DEM
这是我把之前所上传DEM读取VC++源代码于对应DEM数据格式两者和到了一起。以防有人只下DEM读取VC++源代码而不知所对应dem数据格式,而无法使用。 本DEM数据可用TXT打开,这是我上传DEM读取VC++源代码所对应的DEM数据...
达梦数据库DEM搭建及使用参考手册190版本 DEM.pdf
针对不同精度DEM对DIn SAR监测采空区缓慢沉降的影响问题,通过应用三维激光扫描仪、地形图、高相干性Terra SAR影像来获取DEM,分析对比了获取的4种DEM在沟壑斜坡区域的精度,及其参与的"二轨差分"在斜坡区域的形变监测...
黄土高原高程数据DEM
dem2terrainrgb 此模块用于将DEM转换为Terrain RGB栅格图块。 安装 cd dem2terrainrgb pipenv install 用法 $ python main.py -h usage: dem2terrainrgb.py --dem {dem file path} --dist {output directory path...
基于格网DEM数据,进行坡度,坡向的计算,使用C/C++作为工具,进行的编程实验。为地理信息系统的作业
以图文并茂的方式,一步步完成asc转换生成dem数据
DEM数据转换为xyz值,做场景的好工具哦
国标DEM NSDTF—DEM 批量转换 ArcGIS GRD格式
提供广东省30米DEM下载,绝对真实有效,便于在arcgis中操作
讲述如何采用C++利用opengl 读取并绘制DEM