Open1
MVVVMとかCleanArchtecherとかの備忘録
What is MVVM
MVVM (Model-View-ViewModel) は、ソフトウェア開発におけるアーキテクチャパターンの一つで、主にGUIアプリケーションの設計で使われます。MVVMは、関心の分離(Separation of Concerns)を促進するため、アプリケーションのコードを3つの主要なコンポーネントに分けて整理します。
MVVMのイメージ
データフローはこんな感じかな
それぞれの責務
View
- 表示に関することをやっている
- ドメインロジックを描かない
ViewModel
- ViewとModelの橋渡しをやっている
- ViewModelはModelからデータを取得し、それをViewに適した形式に変換します。
- ユーザーの操作を受け取って、Modelの状態を変更します。
- ViewModelはViewに直接依存せず、バインディングを使って間接的にデータをやり取りします。
Model
- アプリケーションのビジネスロジックやデータを扱います
- データの取得・保存、ビジネスルール、データ構造などが含まれます。
- モデルはユーザーインターフェース(UI)や表示に関する情報を持たず、純粋にアプリケーションのデータとロジックを管理します
メリット
関心の分離:
各コンポーネントが独立しており、UI、データ、ロジックが明確に分離されます。これにより、メンテナンス性とテストのしやすさが向上します。
双方向データバインディング:
ViewModelとViewがデータバインディングされているため、Modelのデータの変更が即座にUIに反映され、UIの変更もModelに伝わります。
テスト容易性:
Viewが直接ロジックに依存しないため、ViewModelやModelはユニットテストしやすくなります。