Natural (Pure?) Classes, OO Framework-aware Classes or AO Framework-aware Classes

英語の怪しさは、さておき・・・


どうなっていればフレームワークでどうなっていなければフレームワークじゃないかの境界線は分からないけど・・・オブジェクト指向フレームワークの開発では、拡張できるようにクラスをそのようにしたりする、と思う。GoFデザインパターンなんかは、フレームワークを作ろうとしたときに出会うことが多い(と思う)。


クラスの構成や階層構造なんかは、今作っているアプリケーションが、後にライブラリとしても使えるとか、フレームワークとして使えるとかを意識しているかどうかにより、複雑さに影響を与えると思う。一般に、ライブラリとして再利用できるとかフレームワークとして使えるとかを考えながらプログラミングするのは楽しいけど、実践するのは難しい場合も多い。この部分はライブラリとして再利用できるな、とか、この部分はこうすると後に拡張可能なように柔軟にできるな、とかは気づく。


オブジェクト指向の場合は、色々な本などでテクニックやデザインパターンが広まっていると思うので、ライブラリとして使われることを意識して、とか、フレームワークとして使えることを意識して、とかの技術的に気づくこと(ここは Template Method でとか、ここは Strategy でとか、など)は、比較的それほど難しくないような気がする。ただし、使いやすいものを作るのは難しい、と思う。


アスペクト指向の場合は、どうだろうか? アスペクト指向特有の特徴を使った、ライブラリ作成のためのテクニック(デザインパターン)とかフレームワーク開発のための拡張(カスタマイズ可能)のテクニックとかは、それほど世の中に知られていない気がする。


オブジェクト指向の技術的な視点で、再利用の可能性に 気づきながら プログラミング(クラスの構造とかを考える)はできる。しかし、アスペクト指向の技術的な視点で、再利用の可能性に 気づきながら プログラミングは・・・どうだろうか?


まとめると:

  • AOP 的な再利用テクニックにはどのようなものがあるのか?
  • Aspect-Oriented Framework Deplopment (AOP 的な技術を使ってのフレームワーク開発)なんかは存在するのか?


リソース:
なし。比較的新しい話題では、と思う。ただ、AOP 自体が、再利用性とかに良い可能性をもたらすってことで、暗黙にはあるかもしれないけど、明示的に扱った論文とかはまだないよーな。