ぶろぐれ
プログラミング情報・ITニュースやぷろぐれの配信情報などを随時更新しています。
Markdown展開
2013年3月17日日曜日
MVCとは何だろうか?
MVCはその言葉自体はすでに多くの方に認識されてると思います。 Model-View-Controllerの3種に分けて設計することで、変更に耐える安定したアプリケーションを構築するという考えです。 しかしながら、このそれぞれの意味が正しく認識されてない、あるいは意味があいまいになっている事が多々見られるようです。 これはMVPやMVVMなど、MVC派生のアーキテクチャパターンでも同じことが起こっていますが、根底は同じはずです。 以下に私のMVCについて認識を整理するので、皆様のご理解のご参考になればと思います。 # Viewとは? 画面に関する情報です。JSPやhtmlと言えばわかりやすいですね。 __ビジネスロジックをViewに含まない方がよい__という約束があるのは皆さんご存知かと思います。 具体的にはここで「コネクションを貼ってSQL文を書いて実行結果をパースして…」といった処理は書かない方がよいということです。 含めるものはせいぜい_書式の変換_程度です。 JavaScriptで動的にリストのフィルタリングをする、といった場合はその処理もViewに含めていいのかもしれません。 必要なものはあらかじめすべてControllerで用意してもらいましょう。 # Controllerとは? Controllerは、ユーザーからの入力をもとにModelを操作してViewに伝えるのが役割です。 Webアプリケーションであれば、HttpServletを継承して作るクラスがこれに当たります。 ここでも__ビジネスロジックを含めない方がよい__という約束があります。 「コネクションが~」といった処理を書く必要はありません。それはModelの役割です。 # Modelとは? 以上、ViewとControllerに含まなかったものはすべてModelです。 Modelでは好きなだけビジネスロジックを書いてもいいですし、もちろん好きなだけデータベースへアクセスをしてもいいです。 -------- よくRailsとかRailsとかRailsなどのフレームワークで、データベースに収納する単一のオブジェクトを「モデル」と呼ぶこともありますが、 _MVCで言うModelとは別物_だという事を押さえておきましょう。(modelを英和で調べてみましょう。modelは元々曖昧な言葉です) このアーキテクチャパターンに従うと、Modelにロジックが集中することになります。 その為、大きなアプリケーションの場合はModelが煩雑になり理解しにくくなります。 ModelはModelの中で別のアーキテクチャパターンを適用して煩雑化を避ける必要があります。 例えばドメイン駆動設計(特にその中のモデル駆動設計)の一部を取り入れるとModelを整理することができるでしょう。 -------- MVCのアーキテクチャパターンは誤解が多く見受けられますが、適切に理解すれば
どんなアプリケーションにも
色々なアプリケーションに適用できます。 (3/17 12:40 補足) Apache WicketのようにControllerに当たる部分を完全に隠蔽しているものもあるので、適用できないものもあります。 勿論MVCだけではなく、MVP・MVVM・あるいはそれ以外にもアーキテクチャパターンはあるので、 それぞれがどういったパターンになっているか抑えることで、 皆様のアプリケーションの設計の手助けになるでしょう。
0 件のコメント:
コメントを投稿
次の投稿
前の投稿
ホーム
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿