2

谁能告诉我如何在 AOP 中实现策略模式?

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

4

2 回答 2

5

我发现最简单的方法是让你的类实现一个空白接口。

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

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

为此,您可以查看有关如何使用 inter-type的手册。


这篇文章有一些很好的例子将方法注入接口。

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

以下是一些链接,展示了使用 AOP 可以做什么:

AspectJ 不仅可以用于一些基本的横切关注点,还可以用于很多其他方面。大多数 GoF 设计模式都可以通过使用 AspectJ 轻松实现或退役。

于 2009-10-22T03:41:51.293 回答
0

我觉得你把两件事搞混了。

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

于 2009-10-22T05:57:35.010 回答