关于Java AOP和dotnet attribute

本文探讨Java AOP与DotNet Attribute在实现代码再利用、解决编码问题上的相似之处与差异,包括配置管理、代码搜索范围、维护成本等方面。并介绍Java5中引入的类注解语法,以及二者在实际开发中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于java aop和dotnet attribute, 有的人说, aop是概念, attribute是技术, 不能混为一谈, 不过如果你想在不影响原有class hiberarchy的条件下, 用横切的方法去影响class或method的行为, 当你对.net程序员提这个要求, 他们想到的是attribute, 如果你对java程序员说, 他们肯定会说aop, 所以无论是概念还是技术, 只要他们干的是有相同之处, 我们就不用去太在乎他的名字. 只专著他们的功能好了.

首先, aop和dotnet attribute都属于declarative programming(dp), dp的主要目的就是解决code reuse问题, 在不改code和少改code的情况下, 通过替换adapter来更改系统的功能。思路很象(object oriented programming)oop里的options或style, 不同的是在oop里, 你得把aa.options = .. 或setstyle(aa, ..)放到code里, 这样比较灵活, 但是一但功能变动, programer必须查看整个程序去找到对应的代码, 而且可能不只一处, 提高了系统的维护成本

就我目前所知, aop多数是用xml来配置管理adapter, 这样不用更改code, 只要更改xml就可以了, 这确实比较方便, 但也带来了管理的问题, 比如, 我们用以下的code来配置和初始化adapter环境

--抄自nuke的spring framework open document, thanks

applicationcontext ctx=new

filesystemxmlapplicationcontext("bean.xml");

action action = (action) ctx.getbean("theaction");

很多时侯, 我们把这段初始化adapter的code封装到framework里base class的construction里,原因就不用說了。但这样一來, 当我们在开发系统时使用很多基于aop的framework时, 系统就得带有很多xml, 其它人是无法光从系统code知道系统到底执行了啥东西, 他们得从framework的文档或code里找到哪个xml被用到, 再去xml里看哪个element是针对哪个adapter的, 这样也提高了系统的维护成本。有的ide支持可以缓解一些问题,比如在jbuilder, eclipse里加入spring 的配制插件去帮助修改xml。

dotnet attribute引入了attribute target的概念, target对应的是code的基本元素, 象method, class, 以及assembly(app), 比如

[webmethod]

procedure aaa(..);

这样做的好处简单的说, 一是缩小了adapter的在code里搜索范围, programer只要查看target就可以了, 二是adapter配制是在code里, programer也不用到处去找对应的xml和element,

缺点是当修改attribute 后必须re-compile, 不如aop方便, 但也避免了aop的reflection带来的cost, programmer 还可通过compiling error去找到typo问题。

目前, java 5里也出现了类似的语法, 比如以下例子是ejb3里用来实现dependency injection,很象以前java xdoclet里的annotations .

@ejb(name="calculator", jndiname = "org.jboss.tutorial.injection.bean.calculator")

public void setcalculator(calculator c)

{

set = c;

}


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值