谁能告诉我如何在AOP中实现策略模式?
使用Spring-AOP或AspectJ的示例将非常有用。
发布于 2009-10-22 11:41:51
我发现的最简单的方法是让你的类实现一个空接口。
然后使用AspectJ将实现插入到接口中。
这样,如果您需要更改算法,只需使用不同的方面,问题就解决了。
要做到这一点,您可以查看how to use inter-type上的手册。
This article有一些将方法注入接口的很好的例子。
这不是实现策略模式,但基本概念是相同的,这使得从一个算法切换到另一个算法很容易,而不需要更改代码的任何其他部分。我能看到的唯一另一种方法是使用DI,只需注入一个新的具体类,每个类都有相同的Strategy接口,但这是不可能的。
下面是一些链接,展示了使用AOP可以做些什么:
除了一些基本的横切关注点之外,AspectJ还可以用于更多方面。通过使用AspectJ,大多数GoF设计模式都可以很容易地实现或淘汰。
发布于 2009-10-22 13:57:35
我想你把两件事搞混了。
AOP是关于围绕“真正的”代码实现不同的方面。比如日志记录和验证。日志记录本身可以通过使用DI容器(如spring提供的)来实现,以便真正将日志记录委托给正确的实现(策略)。
https://stackoverflow.com/questions/1604889
复制相似问题