体验Java 1.5中面向方面(AOP)编程[Java编程]
本文“体验Java 1.5中面向方面(AOP)编程[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
关于一个可以拜候源代码的经验丰富的Java开辟人员来说,任何程序都可以被看做是博物馆里透明的模子.近似线程转储(dump)、办法调用跟踪、断点、切面(profiling)统计表等工具可以让我们理解程序目前正在履行什么操作、方才做了什么操作、将来将做什么操作.但是在产品环境中情形就没有那么明显了,这些工具普通是不可以利用的,或最多只能由受过锻炼的开辟者利用.支持团队和终究用户也需求知道在某个时刻利用程序正在履行什么操作.
为了弥补这个空白,我们已经创造了一些简单的替换品,比方日记文件(典型情形下用于服务器处理)和状况条(用于GUI利用程序).但是,由于这些工具只能捕捉和报告可用信息的一个很小的子集,并且普通必须把这些信息用简单理解的方法表现出来,所以程序员趋向于把它们明确地编写到利用程序中.而这些代码会缠绕着利用程序的业务逻辑,当开辟者试图调试或理解核心功效的时刻,他们必须"环绕这些代码工作",并且还要记得功效发生改变后更新这些代码.我们但愿实现的真正功效是把状况报告集合在某个位置,把单个状况消息作为元数据(metadata)来管理.
在本文中我将考虑利用嵌入GUI利用程序中的状况条组件的情形.我将介绍多种实现这种状况报告的差别办法,从传统的硬编码习惯开始.随后我会介绍Java 1.5的大量新特点,包含注解(annotation)和运行时字节码重构(instrumentation).
状况管理器(StatusManager)
我的主要目标是成立一个可以嵌入GUI利用程序的JStatusBar Swing组件.图1显示了一个简单的Jframe中状况条的款式.
图1.我们动态生成的状况条
由于我不但愿直接在业务逻辑中引用任何GUI组件,我将成立一个StatusManager(状况管理器)来充当状况更新的进口点.实际的告诉会被拜托给StatusState对象,因此今后可以扩大它以支持多个并发的线程.图2显示了这种安置.
图2. StatusManager和JstatusBar
目前我必须编写代码调用StatusManager的办法来报告利用程序的进程.典型情形下,这些办法调用都分离地贯串于try-finally代码块中,普通每个办法一个调用.
public void connectToDB (String url) {
StatusManager.push("Connecting to database");
try {
...
} finally {
StatusManager.pop();
}
}
这些代码实现了我们所需求功效,但是在代码库中数十次、乃至于数百次地复制这些代码之后,它看起来就有些混乱了.此外,假如我们但愿用一些别的的方法拜候这些消息该怎么办呢?在本文的背脸部份中,我将定义一个用户友好的非常处理程序,它同享了相同的消息.问题是我把状况消息躲藏在办法的实现之中了,而没有把消息放在消息所属的接口中.
以上是“体验Java 1.5中面向方面(AOP)编程[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |