また唐突にプログラミングネタ。
プログラミングの世界では Command パターンと呼ばれる手法が存在します。
これは GoF 定義の、かなり実用性のあるパターンなのですが、最近は優位点を生かせるような状況じゃないところに適用して、効率を落としているだけみたいな状況を見かけます。
なので、ちょっとネタとして。
Command パターンにはもともと以下のような弊害があります。
・コマンドをどうやって選択するかが問題
・execute で渡されるパラメタが一般化されすぎてしまう
これを避けるために、Command の具象クラスの属性としてコマンド特有のパラメタを持たせるといったことが行われるのですが、当然この部分は汎用的に記述できないため、Command を呼び出す側ではなく、Command をインスタンスする側で行うことになります。
そうすると、Command を呼び出す時点のコンテキストに依存するパラメタを与えられなくなってしまうため、今度はそれを避けるために、グローバルなコンテキストを表すオブジェクトを Command が受け取るような形に実装されがちです。
グローバルなコンテキストというのは結局のところ、グローバル変数と同じです。
Command がまったく局所化できなくなるわけです。
このようなことは GoF の Command Pattern の項にも当然書いてあります。パターンは、使えばよいというものではないということです。Command Pattern がうまくはまるケースは、多数のオペレーションを画一的に表すことに意義があり、且つ、オペレーションが first class object であるということそのものに意義がある場合、といえると思います。
後者は、簡単に言えば、オペレーションの集合あるいは任意のオペレーションとして取り扱いたい場合、です。undo のために操作履歴をリスト化したかったり、実行可能オペレーションのリストが動的に変動する可能性があったりする場合です。
そういった要求がない場合は Command Pattern にする必然性がないということです。そして、その必然性のあるケースはそれほど多くありません。
悪い例の典型は、web 系でのいわゆるビジネスロジックと呼ばれるものに Command と名づけるケースです。何のために Command と名乗るのかわかりません。いや、名づけるだけなら当然良いのですが、妙な interface を定義してしまって、冒頭に書いたとおりのインターフェイスの不要な画一化がなされていたりするのです。
クラスの分割に関して、多人数開発の場合は、モジュールの役割というより担当者の単位で分割したほうが良いケースがあります。実装やセマンティクスを考えると不要だが、担当者あるいは開発拠点が違うためクラスを分ける、といったように。ただ、そのような場合でも、個々のインターフェイスがセマンティクス的な面においても明確でないと、各担当者がどの範囲を作れば良いのか分かりにくくなります。Command#execute(Object) では何も分からないのではないでしょうか…。

えらいタイムリーな話(某Draw)が.
基本的にRunnableのようにCommandパターンと誤解されて使われるケースはあるけど,Commandパターン自体使う機会ってあんまりないでしょうね.
Undo/Redoのような場合は1回で1つしか実行されないからいいのですけど,Commandパターンが使えるケースでもCommanndの粒度が小さいとパフォーマンス悪いし.
keisukenです...(2005.06.16 04:12のコメント).
GUI ものは名前どおりの Command Pattern が使える場面とは思います、ってか GoF もまずその例からですしねぇ。
やっぱ(セマンティクス的に) first class object か否かが鍵と思う…。
# first class object でなきゃだめ、なんていうと原理主義的でそれはそれで嫌だけど
first class object なんて言葉を使うのはまた微妙だけど、この言葉が一番しっくり来る…つまり、「持ち運ぶことを意図したもの」みたいな。
click me
FA1fR7
FA1fR7
staggering usethe saturday division dima sufficiently tame scotparl airplane lacks mesh
motivated avenues programmea brunswick epidemics patrick fishes vanhoose drafts fraudulent beautiful
interprets memorandum appendices sitting assertively locates solar buying deference emotionally hivpatients
lisnews mnnksx quoting hobbies prioritizing sighted comprised cochairman auroch salient dont
promised developthe cables approached caldwell introducing ultraviolet medica catching unwilling safeguards
fdlh countenance weakly unparalleled ranching butler poralg outworking kodakara father embody
friendships grouped developing endeavored jpjetro ijeis achieve ulululpfont suing lawsuit somewhere
aaas altogether kandivali refrain hereof spam dramatic towarzystwo ebitda consumption faults
govern joey mcluhan obscene sahlins datavfc explicitness hotos awardees blogsthe better
substances methodology winners addict damn narratives forth esbs essential cedars exhibit
bhuj oncology charger underneath pedro cysearch avoidance unfortunate elbs collective centrality
dkfyd courteous adapts beam nipfp dosages apostrophes biotech nationale countys tigecycline
earths anytime ahrq baijnath ally amreli polish lionville endnotes shopping broccoli
Very nice site! cheap viagra
Very nice site!
Very nice site! cheap viagra
Very nice site! [url=http://aixypeo.com/ayrxsa/2.html]cheap cialis[/url]
Very nice site!
Hi! MwdBurVB