😊
MVVMを理解するために
MVVMはUIを持つソフトウェアをどう構成するかの設計方法です。
MVVMの目的
MVVMには2つの目的があります。
目的1.UI分離(PDS)
UI関連(プレゼンテーション)のコード・データ
と
UI以外(ドメイン)のコード・データ
を分離します。
目的2.UI表示入力とUIロジック・データ分離
UI表示入力
と
UIロジック・データ
を分離します。
MVVMの構成方法
ソフトウェア全体Sを目的1で分離します。
プレゼンテーション部分をP、ドメイン部分をDとします。
S = P + D
DをModelと命名します。
ソフトウェアはPとModelに分離されます。
S = P + Model
Pを目的2で分離します。
表示入力部をView
プレゼンテーションロジック・データをViewModelとします。
P = View + ViewModel
よって、ソフトウェア全体は以下のように分離されます。
S = VIew + ViewModel + Model
View: 表示入力
ViewModel: プレゼンテーションロジック・データ
Model: ドメインロジック・データ
依存方向
View -> ViewModel -> Model
ViewModelはViewを知らない。
ModelはViewModelを知らない。
上記のように分離したので
ViewにはUIロジック・データはありません。
ViewModelにはドメインロジック・データはありません。
ModelにはUIロジック・データはありません。
ModelはUIから独立します。これがMVVMです。
Discussion