随着JAVA的迅猛发展,JDK版本的不断更新,JAVA新的事件模型与旧的JDK模型也有了本质的区别,它的事件模型也有了很大的区别。由于现在的编程都是采用事件驱动,所以很有必要了解的事件模型,我们下面从定制事件的实际出发来具体讨论。
比如你要实现一个定时器类,它的主要功能是在在一定的时间后,启动具体的处理事件
因此我们可以设计两个类:定时器类(Timer)和调用类(Clock),对应的USE CASE的顺序图如下:
在此有两个说明:1)根据问题的复杂程度,设计Main类。当问题规模较小的时候,可以将“调用类”指定为Main类;2)在此顺序图中运用了回调(CALLBACK)功能。此功能在C++中的实现是通过指针,而在JAVA中没有指针的概念。我们在此通过接口(Interface)来实现。在此我们采用通用界面设计样式[1]的服务界面样式。
就是为了使类的设计具有可扩展性和可复用性,在类的基础上增加了接口。为了简便起见,我们只考虑两个类的交互。由于接口只包括方法,不包含属性,所以不能拥有其它对象的引用,因此通用界面的模式只有以下三种:
在此应用中我们用上述的服务界面模式来处理事件。由于事件都有两个参与者:事件的供应者和使用者,因此在事件处理的具体应用中,它又可以细分为“推出事件模式”和“拉进事件模式”。
回调和接口
我们知道程序设计的一个原则:使保持不变的东西和发生变化的东西分离开来[2]。在此我们使用接口来容纳易变的代码(比如,我们在定时器设置的时间后,触发某些事件,这些事件应该是由用户来设置的,是可以变化的)。在JAVA中,接口恰好可以实现回调的功能。因此我们利用回调技术将发生变化的代码封装在接口中,而保持不变的代码则“回调”发生变化的代码。从而是对象具有不同的表达形式,但却可以接受相同的参数。
具体实现
结合上述的服务界面模式和回调技术,我们建立如下的框架:
TimerListner 接口包含processEvent()方法,在这个方法中放置当事件发生时,我们需要的动作的代码。以下是程序的示范代码:
interfaceTimerListener{
publicvoidprocessEvent();
}
publicClassClockimplementsTimerListener{
Clock(){
Timert=newTimer(this);//向Timer类登记
}
publicvoidprocessEvent(){
//你的事件处理的代码
}
}
classTimerextendsThread{
privateTimerListenertl;
Timer(TimerListenertl){
this.tl=tl;
}
publicvoidrun(){
while(true){
sleep(1000);
tl.processEvent();
}
}
}
参考资料
- UML对象设计与编程
- 《JAVA编程思想》
- 《JAVA2核心技术》
- 《设计模式》
关于作者
|
|
|
唐咸峰 has authored this article
|
分享到:
相关推荐
2.设计模式是比 J2EE 等框架软件更小的体系结构,J2EE 中许多具体程序都是应用设计模式来完成的,当你深入到 J2EE 的内 部代码研究时,这点尤其明显,因此,如果你不具备设计模式的基础知识(GoF 的设计模式),你很难...
此外,该项目还采用了MVC设计模式,将视图、控制器和模型分离,使得系统的可扩展性和可维护性得到了极大的提高。 此项目不仅可作为毕业设计的参考,还可用于日常学习和实践。开发者可以根据自己的需求对项目进行二...
在本书中,这些便利工具的创造者不仅解释了它们究竟如何工作、如何使用,同时,还阐释了创造它们的原因,及其背后的设计模式。 本书既能够成为读者的理论支持,又可以作为构建可靠的,可伸缩的,可维护的并发程序的...
跟狂神学的学习Java时,写的一个...这款小游戏在编写过程中充分运用了Java语言的特性,如面向对象的思想、事件驱动编程等。这使得游戏具备了良好的可扩展性和可维护性,你可以根据自己的需求对游戏进行二次开发和定制。
模块化设计:源码采用模块化的设计思想,结构清晰、易于扩展,方便用户根据自己的需求进行定制和修改。 适用场景: 学习与研究:对于大学生和初学者来说,这份源码资源是了解Java编程规范、学习Java高级特性的绝佳...
毕业论文详细阐述了系统的设计思想、实现过程以及关键技术点,对于理解并掌握Spring Boot框架和MVC设计模式的应用具有指导意义。论文结构清晰,逻辑严密,既有理论阐述,又有实践分析,对于即将进行毕业设计的学生来...
深入理解Sp深入理解SPARK:核心思想与源码分析》结合大量图和示例,对Spark的架构、部署模式和工作模块的设计理念、实现源码与使用技巧进行了深入的剖析与解读。 《深入理解SPARK:核心思想与源码分析》一书对Spark...
4.5 在其他设计模式中的体现...........50 4.6 一个重构做法的讨论...................54 第5 章 专题:Java 语言的接口........59 5.1 什么是接口...................................59 5.2 为什么使用接口..........
基于SSM框架开发的SSM游戏售卖商城是一个功能完善、技术先进的Java Web应用程序,旨在提供一个便捷、高效的游戏购买平台。该系统采用了Spring、SpringMVC和MyBatis三大框架进行整合开发,确保了系统的稳定性、可扩展...
答:触发器是一种特殊的存储过程,主要通过事件来触发而被执行。 什么是存储过程?用什么调用? 答:存储过程是一个预编译的SQL语句,优点是允许模块化的设计。就是说只需要创建一次,以后再程序中就可以调用多次。...
本项目软件架构选择B/S模式和java技术,总体功能模块运用自顶向下的分层思想。再然后就是实现系统并进行代码编写实现功能。论文的最后章节总结一下自己完成本论文和开发本项目的心得和总结。通过人事管理系统将会使...
采用SSH2与前台Ajax技术相结合 来实现,在设计过程中全方位的应用软件工程的开发思想,对项目进行UML建模包括各模 块的类图、时序图等。系统基于B/S分布式结构,适应围广阔。 S2SH集成框架是Struts2、Spring 和...
“基于Spring Boot开发的在线教育系统”这一毕业设计项目,不仅是对Java开发技术的一次深入实践,更是对现代教育模式与技术融合的一次有益探索。项目以Spring Boot为框架,整合了众多前端与后端技术,实现了在线教育...
在技术上,该系统采用了MVC设计模式,使得代码结构清晰、易于维护。Spring框架的引入,使得系统的业务逻辑与数据访问层得到了有效分离,提高了代码的可读性和可复用性。SpringMVC则负责处理用户请求与响应,保证了...
同时,系统还采用了前后端分离的开发模式,前端使用Vue.js框架进行开发,后端提供RESTful API接口,使得前后端开发可以独立进行,提高了开发效率。 此外,该系统还具备较高的可扩展性和可定制性,读者可以根据自己...
不好意思,本人发的"北大青鸟ACCP 6.0 软件开发初级程序员:c#语言和数据库技术基础"和 "北大青鸟ACCP 6.0 软件开发初级程序员:使用C#语言开发数据库应用系统" 文件搞反了,如果一起下载不影响的。呵呵 ACCP...
同时,项目中的各个模块均采用了模块化的设计思想,使得同学们可以根据实际需求进行二次开发,添加更多的功能或进行定制化的改造。 毕业论文部分,不仅详细阐述了项目的开发背景、意义、需求分析、系统设计等方面的...
论文主要探讨“房屋租赁管理系统”的理论基础和设计思想,根据系统的开发过程和系统的功能实现为主线来论述数据库管理软件的开发过程。主要阐述以软件工程理论作为系统开发的理论基础,以客户机/服务器模式的关系型...
在Asp.net中如何用SQLDMO来获取SQL Server中的对象信息 使用Relations建立表之间的关系并却使用PagedDataSource类对DataList进行分页 通过作业,定时同步两个数据库 SQLSERVER高级注入技巧 利用反射实现ASP.NET控件和...