AspectJ: 通往AOSD之路的最佳军火

王朝asp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

同步自:http://www.blogjava.net/AndersLin/archive/2006/06/24/54806.Html

在AOSD:应用AOP实现业务逻辑中, 我提出关注的接口;

其原文在javaeye上的讨论狼平方也提出可以用event,或者intercepter。

当然不同的方式可以解决不同的问题。这里要讨论一下aspectJ和Event以及intercepter的不同。

1. 先来看看event的方式:需要两个对象Event和EventHandler(EventListener),event和eventHandler,属于数据契约。换句话说,牺牲了编译检查的好处,当然可以应对变化时有一定的好处。一旦需求变化,代码上的变动需要的工作量不少,更为严重的是,如狼平方所说的侵入性太强。

2 接着看interceptor的AOP,相对于Event方式,虽然都是基于数据契约,都给自己做转型,但是代码量少了(因为代码生成),重要的是没有event那样的侵入性。

3. 狼平方做了改进,利用AOP来做brocastEvent的工作。需要做的工作还是很多,甚至我以为这个工作还不如直接用Interceptor来得直接。

如我在小议领域模型(Domain Model) 所说的Domain Service处理两个逻辑:业务规则和流程逻辑,而AOSD:应用AOP实现业务逻辑要试图解决的问题是流程上逻辑,而以上无论是那种方式,都无法解决一个问题:流程信息。

假定现有两个流程如下:

Word-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"

public class DomainService
{

public void bizPRocessA()
{

SomeObject instance = doSomeAction(
);

}

public void bizProcessB()
{

SomeObject instance = doSomeAction(
);

}

public SomeObject doSomeAction(
)
{

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航