Factory Method and Crosscutting Nature

またまた、なんで Nature とかカッコつけて英語にしてんの? というのはもっともだけど、それはさておき、、、Abstract Factory を実装していたときにも気が付いたことだけど、Factory Method も Crosscutting な Concern に影響されるものなのだろうか。
http://www.ncfreak.com/asato/doc/caesar_dp/fm.html
どういう Concern が Factory Method を Crosscutting にするんだろうか。そもそも Crosscutting かなあ。ちょっと微妙。どちらかというと、システム全体に影響する Concern みたいな感じか。いや、よくわからん。

もうひとつ微妙な話は、オブジェクトの適用範囲。たとえば、Factory Method だと、Creator の使用範囲(どこでだれにどのように使われるのか)の種類には、どのようなものがあるのだろうか。よくわからん。曖昧。

さらに感じたのは、今回の場合は Caesar を使って実装したんだけど、いま上に書いたような感覚は、AspectJ を使って Factory Method を実装したときには、感じなかった感覚。なぜ、この感覚の差が出たのか。言語の特徴の差だろうか。

さらにいうと、Factory Method のようなパターンは、オブジェクト指向 (or Java) だけ を考える場合には、比較的に単純だと思われるパターンが、なぜ AOP で考えるとそれほど単純でなくなるんだろうか。一つの理由は、恐らく、問題に対する解決策が、それ (Factory Method) だけしかない or それがもっとも妥当だから、かな?

各パターンの 本質 は何だろう。なにが Factory Method を必要とした動機なんだろう(もちろん、動機は GoF 本に書いてあるけど、もっと本質的な動機があるような気がする)。また、何が(言語として)足りなかったから Factory Method になったんだろう。言語の特徴とパターンの関係は、興味深い。

リソース:

  • Ellen Agerbo, Aino Cornils. How to preserve the benefits of Design Patterns. Proc. of OOPSLA'98. (1998)

http://www.daimi.au.dk/~apaipi/publications

  • Joseph Gil and David H. Lorenz. Design Patterns vs. Language Design. ECOOP Workshops 1997. (1997)

http://www.ccs.neu.edu/home/lorenz/papers/ecoop97/1357.htm

  • Gregory T. Sullivan. Advanced Programming Language Features for Executable Design Patterns "Better Pattern Through Reflection". AI Memo 2002-005 March 2002. (2002)

http://citeseer.nj.nec.com/sullivan02advanced.html