iOSアプリ設計パターン入門を読んだので、アウトプットも兼ねて記事にしたいと思います。
今回はiOSアプリ開発でよく耳にする(iOSアプリ開発以外でもよく耳にする)MVCについて書いていきます。
まだ、この辺は勉強したてなので誤りとかがありましたら、ご指摘いただけると幸いです。
MVC
MVCはプログラムを「入力」「出力」「データの処理」と分けたときに、それぞれController、View、Modelと定義したものです。これらをレイヤーと呼ぶのですが、それぞれの役割は以下となります。
レイヤー | 役割 |
---|---|
Controller | ユーザの入力を受け、Modelにコマンドを送る |
Model | コマンドを受けて処理を行い、自信を更新 |
View | Modelの変更を監視し、自信を更新 |
となります。これらを図にすると以下のように表すことができます。
図で分かる通り、ViewがModelを監視し、ControllerはModelへメッセージを送る(ここでは処理の依頼)をして、それを受けModelは処理を開始します。
これが、MVCの簡単な概略になります。
しかし、現在のアプリケーション開発はMVCが登場した時よりも複雑になり、元のMVCでは対応が難しくなったり、ViewはModelに依存しているため、Viewno再利用ができないといった不満が出てきました。
そこで、誕生したのがAppleの提唱したCocoaMVCというものです。
CocoaMVC
CocoaMVCと元のMVCはどういった面で違いがあるのかを見ていきます。
まず、元のMVCは図で分かる通り、ViewがModelを監視している仕組みになっているため、これではViewは特定のModelに依存する作りになってしまいます。一方、CocoaMVCはViewとModelが完全に独立した形となっています。このためModelがどんな形になってもViewを変更せずに済むわけです。つまり、どんなModelでもViewを使うことができるわけですから、Viewの再利用ができるようになりました。
終わりに
さて、MVCとCocoaMVCの両方を簡単にまとめてみました。本当はコードを載せてMVCとCocoaMVCを比較したほうが良いのですが、それはまたの機会ということで今回はここまでにします。また、何回も書籍を読み直したり、調べたりして新しく知見を得られたら更新をしていきたいとい思います。
今回はここまで!!