谁能告诉我如何在 AOP 中实现策略模式?
使用 Spring-AOP 或 AspectJ 的示例将非常有帮助。
谁能告诉我如何在 AOP 中实现策略模式?
使用 Spring-AOP 或 AspectJ 的示例将非常有帮助。
我发现最简单的方法是让你的类实现一个空白接口。
然后使用 AspectJ 将实现插入到接口中。
这样,如果您需要更改算法,您只需使用不同的方面即可解决问题。
为此,您可以查看有关如何使用 inter-type的手册。
这篇文章有一些很好的例子将方法注入接口。
这不是实现策略模式,但基本概念是相同的,可以轻松地从一种算法切换到另一种算法,而无需更改代码的任何其他部分。我能看到的唯一另一种方法是使用 DI 并注入一个新的具体类,每个类都具有相同的策略接口,但这不在问题范围内。
以下是一些链接,展示了使用 AOP 可以做什么:
AspectJ 不仅可以用于一些基本的横切关注点,还可以用于很多其他方面。大多数 GoF 设计模式都可以通过使用 AspectJ 轻松实现或退役。
我觉得你把两件事搞混了。
AOP 是关于围绕“真实”代码实现不同方面的。就像日志记录和验证一样。日志记录本身可以通过使用 DI 容器(如 spring 提供)来真正将日志记录委托给正确的实现(策略)来实现。