我希望使用aspects
将记录代码与我的域逻辑分开。但是那些aspects
应该编译时编织而不是制作代理对象。
除了AspectJ
之外,还有哪些选项?
答案 0 :(得分:1)
嗯,另一种处理横向问题的方法是使用命令模式作为日志记录。这样,您可以使用ServiceDelegate来控制所有命令运行,并在此处控制每个横向关注点。
例如,每个命令都必须从定义runCommand
方法的抽象类继承。然后调用ServiceDelegate
以这种方式运行命令:
//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
也许这听起来很奇怪,但它是使用方面的替代方案。它不是更好或更糟,它是不同的,它将是方面更适合的场景,以及其他命令会很好的场景。