MVVMを軽くまとめ
MVVMとは
MVVMとは、利用者に対する表示・操作の機能(ユーザーインターフェース)が存在するソフトウェアの構造を階層的に整理したモデルの一つで、全体を「Model」(モデル)-「View」(ビュー)-「ViewModel」(ビューモデル)の3層に分割にしたものです。
MVCが3グループのModel-View-Controllerで構成されている場合、MVVMは3グループのModel-View-ViewModelで構成されているパターンです。
- Model:扱うデータ。
- Views:視覚的な要素。 通常、UIViewのサブクラスを意味します。
- View Models: Modelが持っている情報をViewに表示される値に変更します。
MVVMを一言で定義すると、Modelのデータを加工するViewModelと、そのViewModelを示すViewがあるパターンと定義できます。
MVVMをが使用される場合
主にMVVMパターンはデータを加工する必要がある場合に使用することになります。
例えば、子犬(Model)が生まれた時間をDateタイプで持っているとしてみます。
子犬が何歳なのか知りたいです。 MVCなら子犬が何歳なのか計算するロジックをView Controllerで遂行するが、MVVMパターンではView Modelが遂行することになります。
MVCはModel-View-Controllerの略であるが、一方でMassiveViewControllerと呼ぶこともあります。View Controllerの作業が重くなることから生まれた名前です。
View ControllerはLife Cycleに対する作業と、Modelのデータを画面にばら撒く作業、IBActionsを利用してViewのCallbackを扱うなど様々な役割を果たします。
このようなView Controllerの役割を減らすために現れたパターンがMVVMです。
MVVMメリットとデメリット
メリット
- ViewとModelの依存性を完全に分離できるため、独立性を維持することができます。
- 独立性を維持するため、効率的なユ単体テストができます。
- ViewとViewModelをバインディングするため、コードの量が大幅に減ります。
- ViewとViewModelの関係は1:1です。
デメリット
- 簡単なUIを作る時に設計するのが難しいです。
- データバインディングが必須です。
- 複雑であればあるほど、Controllerと同様にViewModelが複雑になります。
MVVMの動作順
1.ユーザーのActionがViewを通じて入ってくる。
2。ViewにActionが入ると、CommandパターンでViewModelに伝える。
3.ViewModelはModelにデータを要請する。
4.ModelはViewModelから要請されたデータを応答して加工して保存する。
5。ViewはViewModelとDataBindingして画面に表示する。
Discussion