ダミーについて説明したAOPの概念


19

誰かがダミーのAOPの概念を説明できますか:ジョインポイント、ポイントカット、織りなど。

例:アスペクト: 複数のクラスにまたがる懸念事項のモジュール化。どういう意味ですか?

回答:


15

ロギング、監査、セキュリティなどの機能グループとして懸念を考えます

これらの機能はほとんどのコードに存在しますが、実際には動物->犬のクラスには住んでいません-多くのクラスに住むべき機能です- 横断的な関心事です。

  • A ジョインポイントは、アスペクトのコードが実際に実行されるコード内の場所です。

  • ポイントカットは jointpointで動作しますどのようなコード言う方法です。

  • ウィービング -コンパイラ/システムが通常のコードを取得し、すべてのAOPコードを含めて正しいコードなどをトリガーする場合-これは追加のプリコンパイルステップと考えることができます。

簡単に理解できる例は次のとおりです。

  1. デバッグ目的ですべてのメソッド呼び出しを追跡したい(つまり、どのメソッドがどの順序で呼び出されるかを確認したい)。
  2. メソッドが呼び出されたときにメソッドの名前を記録するアスペクトを作成します
  3. アスペクトをコード内のすべてのメソッドに関連付けるポイントカットを作成します。ほとんどのAOPフレームワークでは、いくつかのワイルドカードを使用してこれを簡単に行うことができます。
  4. これで、これまでに呼び出されたすべてのメソッドのロギングができました。

実装とAOPフレームワークによって用語がわずかに異なることに注意してください。


長い答えを書いているように!あなたはもっと簡潔です、私はそれが好きです。わかりやすくするために少し編集します。
Martijn Verburg

おかげで、フォーマットルールを覚えて、忘れないでください。
on野

これはPythonデコレータまたはLispマクロを使用して簡単に実装できるようです-Y / N?
ポールネイサン

@Paul-あなたが言っているどちらの構造にも慣れていないので、私は恐れていますが、クイックグーグルはどちらの方法にも答えるのに十分な洞察を与えませんでした。
on野

@PaulNathan:AOPは動的言語では非常に簡単です。午後に簡単なAOPフレームワークを作成できます。Javaのようなコンパイルされた言語では、人生はそれほど甘くない。
ケビンクライン

-1

順番に読む

各定義は前のものに基づいています。

横断的関心事

アプリケーション全体のどこにでも(懸念)(横断的)迷惑をかけるもの。例:ロギングまたはセキュリティ

アスペクト

既存のコードの、または両方(周囲)に自動的に追加されるコードの塊

PointCutおよびJoinPoint

                  Application code
                           |
                           |
                           |
                           |
                          \|/
                           |
JoinPoint  ----------->("before" aspect, on the way in)  // just before your intercepted application code
Pointcut start--------> public String myMethod(params ...)
                   //your application code
Pointcut finish--------> return (foo)
JoinPoint  ----------->("after" aspect, on the way out)  // just after your intercepted application code
                           |
                          \|/
                           |
                           |
                           |
                  Application code

ポイントカット

アスペクトの一部が実行されるコード実行の場所。

JoinPoint

アスペクトがポイントカットに「結合」するポイント。「前の」joinPointではパラメーターにアクセスでき、「後の」joinPointでは戻り値にアクセスできます。例外がスローされた場合、それを処理または再スローするには「try-catch-finally」が必要になる場合があります。

機織り

ポイントカットの周囲にアスペクトを追加するプロセス


私の答えを投票した人は、コメントを残してください-あなたが気にしない場合。私はそれについて議論を始めないことを約束します。しかし、私がもっと良くできたことを知りたいです。ありがとうございました!
Prashant
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.