1

我想使用aspects. 但是那些aspects应该做编译时编织而不是制作代理对象。

除了 之外,还有哪些选择AspectJ

4

1 回答 1

1

嗯,另一种处理横向问题的方法,如日志记录,是使用命令模式。这样,您可以使用 ServiceDelegate 来控制所有命令运行,并在此控制每个横向关注点。

例如,每个命令都必须继承自定义runCommand方法的抽象类。然后ServiceDelegate调用 a 以这种方式运行命令:

//take control of pre conditions
if(command.isAuthEnabled)
   //do what you want

command.runComman();

//take control of post conditions
if(command.isLogEnabled())
   //do what you want

也许这听起来很奇怪,但它是使用方面的替代方案。它没有更好或更坏,它是不同的,它将是方面更适合的场景,而其他地方的命令会很好。

于 2015-09-26T07:30:47.743 回答