SpringMVC を使ってプログラムを書く中で、"そもそも MVC とは何か" "MVC の利点と問題点は何か" "では問題に対してどうすれば良いのか" をきちんと整理しておこうと思い、書き起こしてみました。
今回はまず MVC とは何かという全体概要、 M/V/C それぞれの役割、MVC の利点と問題点について記載しています。
認識違い等あれば、是非ご指摘下さい。
MVC とは
UI を持つアプリケーションアーキテクチャの一つ。
Model / View / Controller の 3 部プログラム構造。
MVC それぞれの役割
M : Model
- ビジネスロジックの実行
- アプリケーションが扱うデータの操作
- 業務屋さん
V : View
- ユーザからの画面入力
- ユーザへの結果出力
- Model のデータの状態を参照して画面に表示
- レンダリング人
C : Controller
- 入力情報を受取る
- 処理を行う Model と結果を返す View を選定
- 司令塔
MVC の利点
- ビジネスロジック部分 (M)、画面表示部分 (V)、入力に応じてこれらを操作する部分 (C) と役割分担することで、アプリケーション開発も効率的に分業出来る
- M、V、C の役割分担によりプログラムの独立性が高くなり、仕様変更に柔軟対応出来る
MVC の問題点
- 業務で扱うデータ要件が複雑になればなるほど、Model が肥大化していく
- 入力に応じた出力要件が複雑になればなるほど、Controller と View の依存性が高くなる
例) View 上の Link 選択結果( = ユーザの入力内容)に応じる Controller が変わり、各処理結果に対応する View が更に変わる、、、が繰り返される場合
次回は、上記に挙げた MVC の問題点に対してどういう対処があるか? について纏めたいと思います。