MVC に関する疑問がいくつかある。
ひとつは、Javaサーブレット等におけるMVCについて。
もうひとつは、JavaのSwingの仕組みにおけるMVCについて。
Javaサーブレット等におけるMVCって、あれはちょっと本来のMVCとは違うよね。
本来のMVCってのは、Smalltalk界隈で言われるアレ。「ViewはModelを知っており、Modelの操作はControlerを介して行われる」とかいうやつ。
↓こんな感じ?

JavaサーブレットというかStrutsとかにおけるMVCって、ControlerがViewとModelの仲立ちしてるだけやん。
↓こんな感じ?

ていうか、Webアプリってそもそもアプリケーションとして特殊だよなぁ。
なんでこういうことを考えてるのかっていうと、周りの人の話を聞いてて、MVCに対する考え方が僕とはすこし違うなぁと思ったのがきっかけ。
ま、何が良くて何が悪いとかの問題ではなくて、単に、MVCに関して他人とあきらかに認識のずれがあるんだけど、どのへんがずれてるのかがわかりにくくて気持ち悪いなぁ、という程度のことなんだけど。
MVCはどうでもよく、重要なのは、データーを表示するときの流れとデータを操作するときの流れのそれぞれの方向に関して決めたルールにちゃんと則ってプログラミングしましょうね、ってことか。
参考:
MVC、これでいいのか?
バスケの Smalltalk MVC に対する違和感
Model View Controller – Wikipedia
…
閑話休題。
JavaのSwingにおけるMVCなんだけど、あれのせいでGUIコンポーネントが使いにくくなってる部分があるよなぁ、と最近思う。
Swingのアレも厳密には本来のMVCとは違うみたい。
ま、それはいいんだけど、Swingってどうも直感的じゃない気がする。
ちょっとしたコンポーネントにさえModelってのがいて、データの操作はいちいちそのModelに対して行わないといけないとか。
例えば、テキストフィールドの文字がユーザーの入力により変化したときのイベントをハンドリングしたいときなんか、わざわざそのテキストフィールドのModelに対してリスナーを追加してやらないといけない。

Modelというものがあることで嬉しいこともあるだろうけど、めんどくさいことの方が多いような気もするんだよなぁ。
でもJTableとかは、やっぱModelとViewが分離してた方が良いよなぁ。
ていうかSwingって、「なにか不便なところがあったら自分で拡張してよろしくやってください」的なノリな気がする。
どのコンポーネントも見た感じ完成まであと一歩って感じだし、やっぱそういうことなのかも。
でも、なかなか良く考えて作られていると思う部分も多々ある。
とりあえず、一通りマスターしたい。
