中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > java高级编程
面向方面 vs 面向对象 4(深入代码)
作者:未知 时间:2005-07-24 21:16 出处:JR 责编:chinaitpower
              摘要:面向方面 vs 面向对象 4(深入代码)
 by Narayanan A.R. June 15, 2005
翻译zhangv (derekzhangv.at.hotmail.com)
原文:http://www.devx.com/Java/Article/28422/0/page/4

深入源代码

为了理解样例需求的OOP设计,请参看源代码并思考以下几个问题: 
下载

* 首先分析oldway包中EmployeeServiceTestCase 类中的代码
*查看testEmployeeCredit 方法
*搞懂业务类Employee和BusinessUnit
*学习 service,repository和factory概念.这些是业务驱动设计的主要概念.
*更深入地理解oldway包中的service,repository和factory类

而AOP地理解则应该是:
*分析newway包中EmployeeServiceTestCase 类
*查看service,repository和factory类,基本和前一种差不多.只是你要让advice截取程序的流程.
*研究aspect类学习point cut的定义

要执行程序,你需要做的工作:
* 下载AspectWerkz 2.0 http://aspectwerkz.codehaus.org/
*设置以下的环境变量:
set JAVA_HOME=c:\Program Files\Java\jdk1.5.0
set ASPECTWERKZ_HOME=C:\aw_2_0_2
set PATH=%PATH%;%ASPECTWERKZ_HOME%\bin
set CLASSPATH=
C:\aw_2_0_2\lib\aspectwerkz-2.0.RC2.jar;C:\aw_2_0_2\lib\aspectwerkz-jdk5-2.0.RC2.jar; classes;C:\ junit\3.8.1\resources\lib\junit.jar
*解压缩源代码和其他文件
*编译Java文件,但不要编译测试用例否则你调试时会遇到一个错误.
*进行离线调试.假设你把文件解压缩到c:\aop ,类文件解压到c:\aop\classes,在c:\aop目录下执行以下命令:
%ASPECTWERKZ_HOME%\bin\aspectwerkz -offline etc/aop.xml -cp classes classes
*AOP框架会修改类来注入必要的字节码
*编译测试用例,使用JUnit运行它.

后记
当你完成了上面的这些工作,你应该有以下的领悟:
*程序中的交叉关联
*关于AOP中方面的含义
*如何用AOP来把程序业务层中的交叉关联分离出来,使用point cut和advice
*在给定的一种情况下使用 OOP和AOP时在程序控制流上的不同

幸运的是,从本文你应该也得到一种看待实际开发的新视角.你应该有信心使用AOP来改进项目中的设计,建模和代码的重用性.至少,你可以开始使用AOP来处理日志,错误和持久化.

个人觉得,AOP的学习曲线相对较陡,尤其在理解定义point cuts的句法时.理想的情况是,使用OOP来设计业务模型,使用AOP把业务类中的交叉关联转移从而使代码简洁并提高可读性.

AOP的一个缺点是会使调试变得困难,因为不同于OOP,程序流变的复杂,交互是由编译期或执行期决定.我准备将来做一些自动化工具来解决这个问题.
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有