我想使用aspects
. 但是那些aspects
应该做编译时编织而不是制作代理对象。
除了 之外,还有哪些选择AspectJ
?
嗯,另一种处理横向问题的方法,如日志记录,是使用命令模式。这样,您可以使用 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
也许这听起来很奇怪,但它是使用方面的替代方案。它没有更好或更坏,它是不同的,它将是方面更适合的场景,而其他地方的命令会很好。