MVCとは? MVVMとは? 特徴やメリットはなにか

経緯

MVCやMVVMで検索してみると、大量に記事がヒットする。そしてややこしい。
自分なりに簡略化してまとめてみました。

MVCと一言で言っても、何種類か存在しており、ややこしい。
参考:サバクラ両方で動く JavaScript の大規模開発を行うために
多少不正確かもしれませんが、いろんな記事を漁ってみてだいたいこういうことでしょ?って感じにまとめてみました
スポンサーリンク

はじめに(MVCの概要)

MVCとは設計手法の一つ。
実装を、Model-View-Controllerの三つの領域に分けて行う。
この設計を用いることで、画面変更が容易になったりする。
MVVMは、MVCの亜種のようなもの。

MVCとは

使用目的

ビジネスロジックを、画面表示から独立させるために用いる。
(画面変更の影響を、ビジネスロジックが受けないようにするため)

前提条件

画面表示は頻繁に変更されるが、ビジネスロジックはあまり変更されない。
したがって、画面変更によって、ビジネスロジックを変更しないですむようにしたい。

参考サイト
MVCができた経緯

Model, View, Controllerがどのようにしてできたかがわかりやすかった

Model-View-Controller(MVC) 再考

記事中盤からの内容がわかりやすかった。『MSDNのMVC記事まとめ』ってところ

MVCの責務

  • Model
    Viewから独立した処理を担う。
  • View
    UI、データの表示、装飾、などを担う。
    例1、データ入力で、数値入力させるか、セレクトボックスで選ばせるか。
    例2、同じデータでも、数値表示するか、グラフ表示するか。
    など、どのように人に見せるかを担う。
  • Controller
    ViewとModelをつなぐ役割。

依存関係

  • Model
    独立
  • View
    Modelに依存
  • Controller
    ViewとModelに依存

MVCを利用するメリット・デメリット

  • メリット
    Viewを変更しやすい
  • デメリット
    MVCの構造は冗長。コード量が増え、構造が複雑化する。

MVVMとは

概要

ModelをViewから独立させるという目的は、MVCと同じ。
MVVMでは、Controllerは使わず、ViewModelを使う。

ViewModelとは

Viewから画面表示用の装飾を取り外したものが、ViewModelである。
Viewとバインディングされた、「データ」と「関数」。それがViewModel。

ViewModelとControllerの違い

ViewModelは、ViewとViewModelの二つで一組である。
ViewModelはViewと対応した「データ」と「処理(関数)」を持つが、Controllerは必ずしもViewと対応した「データ」や「処理」は持たない。
これがMVVMとMVCの違いである。

なお、ModelとViewの橋渡しを行う点は、ViewModelもControllerと同じである。

参考
MVVMとは何か

参考にしたこの方の解釈と私の解釈は少しずれているけれども
以上です

コメント

  1. beginner より:

    MVCとMVVMの違いの記事の中で一番わかりやすかった。助かる

タイトルとURLをコピーしました