Open1

MVVVMとかCleanArchtecherとかの備忘録

tiking76tiking76

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はユニットテストしやすくなります。