如何在AOP中实施战略模式

时间:2009-10-22 03:31:39

标签: spring design-patterns aop aspectj strategy-pattern

有谁能告诉我如何在AOP中实施战略模式?

使用Spring-AOP或AspectJ的示例非常有用。

2 个答案:

答案 0 :(得分:5)

我找到的最简单方法是让你的类实现一个空白界面。

然后使用AspectJ将实现插入接口。

这样,如果您需要更改算法,您可以使用不同的方面,问题就解决了。

要执行此操作,您可以查看有关如何使用inter-type的手册: http://www.eclipse.org/aspectj/doc/released/progguide/starting-aspectj.html#inter-type-declarations

更新:由于我要假设有些人不理解我在说什么,所以最简单的方法就是一个例子。本文提供了一些将方法注入接口的好例子。 http://ramnivas.com/blog/index.php?p=20

这不是实现策略模式,但基本概念是相同的,可以轻松地从一种算法切换到另一种算法,而无需更改代码的任何其他部分。我能看到的唯一另一种方法是使用DI并注入一个新的具体类,每个类都具有相同的策略接口,但这是不可能的。

更新2:以下是一些显示可以使用AOP完成的操作的链接: 摆脱设计模式密度:http://www.ibm.com/developerworks/java/library/j-aopwork7/index.html 使用AspectJ增强设计模式:http://www.ibm.com/developerworks/java/library/j-aopwork6/index.html AspectJ可以用于更多,而不仅仅是一些基本的跨领域问题。使用AspectJ可以轻松实现或退出大多数GoF设计模式。

答案 1 :(得分:0)

我认为你混淆了两件事。

AOP是围绕“真实”代码实现不同方面。像记录和验证。日志记录本身可以通过使用DI容器(如spring提供)来实现,以便将日志记录委托给正确的实现(策略)。