607
538

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MVCモデルについて

Last updated at Posted at 2016-10-14

#記事を移動しました。
https://zenn.dev/dd_sho/articles/36abe63831d909
今後は上記の記事で更新します。(2021/10/03)

MVCモデルについて整理したいと思い,いろいろ調べたのでその内容を記事にしたいと思います.

MVVMについても記事書いてみました。良ければ見てみてください。
【iOS】MVVMについて
【Android】MVVMについて

MVCモデルとは

役割ごとにModel, View, Controllerに分割してコーディングを行うモデル
それぞれの役割は,

  • Model --> システムの中でビジネスロジックを担当する

  • View --> 表示や入出力といった処理をする

  • Controller --> ユーザーの入力に基づき,ModelとViewを制御する

概念図としては次の図1のようになる.
MVCモデル図.png
図1 MVCモデルの概念図
(出典:http://www.slideshare.net/MugeSo/mvc-14469802)

※上記の概念図はiOS向けではなかったらしく,次の記事をご参考にされることをオススメします.
http://qiita.com/lovee/items/5f55422f6b55d968bbdc
以下,この記事からの引用です.
「Model は本来一まとまりのデータ処理をする部品であって、その性質ゆえ内部が非常に複雑な実装が入ったりいろんなメソッドやプロパティがアクセス可能になってたりしており、一つだけでなく複数の View クラスの必要なデータを対応してるのが一般的です。そのため View が直接 Model 参照するということは、すなわちView が自分が必要としないプロパティやメソッドのアクセスまでできてしまう

このような理由からViewがModelを直接参照するのはあまりよろしくないということでした.

MVCモデルの処理の流れ

上記の内容を受けて,ユーザーからの入力があった場合の処理の流れを自分なりに図にしてみました.以下の図2です.
MVCの処理の流れ.png
図2 ユーザーからの入力があった場合のMVCモデルでの処理の流れ

私の理解としては,

  • Model --> 実際にデータの処理を行う

  • View --> Modelの状態を表示する

  • Controller --> ModelとViewに処理をお願いする

といったところです.MVCモデルを参考にする前と後で特に違いが出る点として,

  • ControllerはModelとViewの操作だけを記述すれば良いため肥大化を避けることができる.

  • Viewはもらった値を表示するのではなく,Modelを参照してModel内のデータの状態を表示する.

の2点が挙げられると感じました.

MVCモデルの利点

1.機能毎に分割されているため,分業して作業を進めやすくなる(各人の得意な所に集中できる)
2.それぞれが独立しているので変更・修正があった場合にその影響を受けにくい

今回の記事は以上になります.
この記事を書くにあたって,MVCモデルについてもう一度調べたことで自分の中で整理ができました.

間違っている点や理解が不十分な点等,ご指摘いただければ幸いです.

607
538
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
607
538

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?