Help us understand the problem. What is going on with this article?

MVC とは何かを 1 から学ぶ

More than 1 year has passed since last update.

SpringMVC を使ってプログラムを書く中で、"そもそも MVC とは何か" "MVC の利点と問題点は何か" "では問題に対してどうすれば良いのか" をきちんと整理しておこうと思い、書き起こしてみました。

今回はまず MVC とは何かという全体概要、 M/V/C それぞれの役割、MVC の利点と問題点について記載しています。

認識違い等あれば、是非ご指摘下さい。

MVC とは

UI を持つアプリケーションアーキテクチャの一つ。
Model / View / Controller の 3 部プログラム構造。

MVC それぞれの役割

M : Model

  • ビジネスロジックの実行
  • アプリケーションが扱うデータの操作
  • 業務屋さん

V : View

  • ユーザからの画面入力
  • ユーザへの結果出力
  • Model のデータの状態を参照して画面に表示
  • レンダリング人

C : Controller

  • 入力情報を受取る
  • 処理を行う Model と結果を返す View を選定
  • 司令塔

イメージ図
SpringMVC.png

MVC の利点

  • ビジネスロジック部分 (M)、画面表示部分 (V)、入力に応じてこれらを操作する部分 (C) と役割分担することで、アプリケーション開発も効率的に分業出来る
  • M、V、C の役割分担によりプログラムの独立性が高くなり、仕様変更に柔軟対応出来る

MVC の問題点

  • 業務で扱うデータ要件が複雑になればなるほど、Model が肥大化していく
  • 入力に応じた出力要件が複雑になればなるほど、Controller と View の依存性が高くなる

例) View 上の Link 選択結果( = ユーザの入力内容)に応じる Controller が変わり、各処理結果に対応する View が更に変わる、、、が繰り返される場合

ControllerとView.png


次回は、上記に挙げた MVC の問題点に対してどういう対処があるか? について纏めたいと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした