B-Teck!

お仕事からゲームまで幅広く

【デザインパターン/TIPS】MVC(Model View Controller)モデルとは

Webアプリなんかではよくフレームワークに組み込まれているMVC
実際はどんなもんかと思って調べてざっくりまとめてみた。

1.はじめに

MVCは、SmallTalkにおけるプログラムの設計指針として用いられていた考え方。
モデル・ビュー・コントローラーの3つの要素に分離することで、
それぞれの機能の再利用性や実装のしやすさを実現するための概念。

f:id:beatdjam:20150210004702p:plain

SmallTalkのウインドウアプリケーションのために考えられたモデルのため、
GUIアプリケーションとも親和性が高かったことから広く用いられるようになったもの。
Model View Controller - Wikipedia

2.MVCの各要素

・モデル

アプリケーションにおいて使用されるデータの制御や管理等のビジネスロジックや、
データ自体を扱うオブジェクトを表す。
データの変更が発生した際には、ビューに対して変更を通知し、データの更新を促す。
Wikipediaにも記載されているように、ショッピングサイトの合計額やカート情報、
顧客データ等を管理するような箇所となる。

・ビュー

ユーザーに対して表示を行う。
自分自身はデータを保持せず、モデル内のデータを参照し、表示を行う。
モデルから通知があった場合には更新されたデータをモデルから再取得し、再描画を行う。

・コントローラー

ビューに与えられたユーザー入力を取得し、モデル・ビューの制御を行う。
基本的には制御のみを行い、データ操作や描画を行うことはない。

3.おまけ

上記のモデルとビューの関係は、Observerパターンの関係となっている。
Observerパターンとは、自身の状態の変化があった場合に関連するオブジェクトに対して、
自身の変化を通知する考え方。
Observer パターン - Wikipedia