4

アスペクト指向プログラミング言語でポイントカットを使用して、既存のプログラムに機能を追加するにはどうすればよいですか?

私の理解では、このウィキペディアの記事から-http://en.wikipedia.org/wiki/Pointcut

ポイントカットはコード内の特定の場所に配置され、そのポイントに到達すると、ポイントカットの評価に基づいて、コード内の特定のポイントで、ポイントカットの評価に基づいてより多くのコードを実行できます。これは正しい理解ですか?

もしそうなら、プログラマーはその評価に基づいて異なるコードを実行できるため、機能が追加されます。

4

2 に答える 2

2

たとえば、多数のサービスオブジェクトを含むアプリケーションがあり、すべてのメソッドの時間を計測したいとします。AspectJ表記の使用:

class MyAspect
{
    @Around("execution(public * my.service.package.*(..))")
    public Object aroundAdvice(JoinPoint jp)
    {
       // start timer
       Object o = jp.proceed();
       // stop timer, etc.
       return o;
    }
}

ここで、「execution(public * my.service.package。*(..))」はポイントカットです。これは、アドバイスが実行される結合ポイントのセットを指定します(サービスパッケージ)。

于 2010-12-07T23:27:55.500 に答える
0

ポイントカットは、アドバイス(正確にどこで実行されるかを気にしない「純粋な」コードフラグメント)とジョインポイント(どのコードが実行されるかを気にしない、メソッド呼び出しやリターンなどの実行ポイント)を接続するものです。

現在のアスペクトで使用されるジョインポイントを選択する述語関数(各アドバイスの各ジョインポイントにtrue / falseを与える述語)をpointcutと呼びます。

于 2010-12-08T10:54:39.850 に答える