アスペクト指向勉強会 (第11回) - Map to Implementation
今日と次回は実装編。今日は AspectJ、次回は AspectWerkz と CME (Concern Manipulation Environment) をとりあげます。
Chapter 7 Map to Implementation
AspectJ
千葉先生の本良さげですね。早速買おうっと。
Seasar のMLでも話題になっていたけど、Intertype Declarations というのができるらしい。既存の型に属性や操作を追加できるっていう理解でいいかな。
Crosscutting Theme を実装する場合、Abstract Aspect と Concrete Aspect に分けて実装すると、Advice のコードの再利用がしやすい。
Overview of Steps
Abstract Aspect の実装手順。
- Crosscutting Theme に対して Abstract Aspect を宣言する。
- Crosscutting Theme の各クラスについて...
- インタフェースを宣言する。
- シーケンス図を開始する操作について...
- Abstract Pointcut を宣言する。
- Abstract Pointcut の引数は、対象オブジェクトとテンプレート操作の引数。
- before、after、around を宣言する。
- シーケンス図を開始する操作に続く操作について...
- インタフェースに抽象メソッドを宣言する。
- テンプレートとして定義されていない操作について...
- Intertype Declaration として実装する。
- 属性を Intertype Declaration にマッピングする。
- 関連を Intertype Declaration にマッピングする。
- その他のクラスを直接実装する。
操作の実装で、抽象メソッドを使用する場合と Intertype Declaration を使う場合の使い分けがよくわからなかった。