誰かがAOPで戦略パターンを実装する方法を教えてもらえますか?
Spring-AOPまたはAspectJを使用した例は非常に役立ちます。
誰かがAOPで戦略パターンを実装する方法を教えてもらえますか?
Spring-AOPまたはAspectJを使用した例は非常に役立ちます。
私が見つけた最も簡単な方法は、クラスに空白のインターフェースを実装させることです。
次に、AspectJを使用して実装をインターフェースに挿入します。
このように、アルゴリズムを変更する必要がある場合は、別の側面を使用するだけで問題が解決されます。
これを行うには、タイプ間を使用する方法に関するマニュアルを参照してください。
この記事には、インターフェースにメソッドを挿入する良い例がいくつかあります。
これはストラテジーパターンを実装していませんが、基本的な概念は同じであり、コードの他の部分を変更することなく、あるアルゴリズムから別のアルゴリズムに簡単に切り替えることができます。これを行うために私が見ることができる他の唯一の方法は、DIを使用して、それぞれが戦略に対して同じインターフェースを持つ新しい具象クラスを注入することですが、それは問題外です。
AOPで何ができるかを示すためのリンクを次に示します。
AspectJは、いくつかの基本的な横断的関心事以外にも多くの用途に使用できます。ほとんどのGoFデザインパターンは、AspectJを使用して簡単に実装または廃止できます。
私はあなたが2つのことを混同していると思います。
AOP は、「実際の」コードの周りにさまざまな側面を実装することです。ロギングと検証のように。ロギング自体は、DI コンテナー (Spring によって提供されるような) を使用して実装し、ロギングを適切な実装 (戦略) に実際に委譲することができます。