【发布时间】:2009-10-22 03:31:39
【问题描述】:
谁能告诉我如何在 AOP 中实现策略模式?
使用 Spring-AOP 或 AspectJ 的示例会很有帮助。
【问题讨论】:
标签: spring design-patterns aop aspectj strategy-pattern
谁能告诉我如何在 AOP 中实现策略模式?
使用 Spring-AOP 或 AspectJ 的示例会很有帮助。
【问题讨论】:
标签: spring design-patterns aop aspectj strategy-pattern
我发现最简单的方法是让你的类实现一个空白接口。
然后你使用 AspectJ 将实现插入到接口中。
这样,如果您需要更改算法,您只需使用不同的方面即可解决问题。
为此,您可以查看how to use inter-type 上的手册。
This article 有一些将方法注入接口的好例子。
这不是实现策略模式,但基本概念是相同的,可以轻松地从一种算法切换到另一种算法,而无需更改代码的任何其他部分。我能看到的唯一另一种方法是使用 DI 并注入一个新的具体类,每个类都有相同的策略接口,但这不在问题范围内。
这里有一些链接展示了 AOP 可以做什么:
AspectJ 不仅仅可以用于一些基本的横切关注点。大多数 GoF 设计模式都可以通过使用 AspectJ 轻松实现或停用。
【讨论】:
我认为你把两件事搞混了。
AOP 是围绕“真实”代码实现不同方面。就像日志记录和验证一样。日志记录本身可以通过使用 DI 容器(如 spring 提供)来实现,以将日志记录真正委托给正确的实现(策略)。
【讨论】: