ViewModel またはモデルは MVVM で INotifyPropertyChanged を実装する必要がありますか?
MVVM の領域内では、ViewModel または INotifyPropertyChanged を実装するモデルの選択が議論を引き起こしました。従来の MVVM 実装では、この責任をモデルに割り当てることがよくありますが、Josh Smith の CommandSink の例では、ViewModel にそれを実装させることで逸脱しています。
INotifyPropertyChanged としてモデル
引数:
-
明確な分離懸念事項: モデルはビジネス ロジックとデータをカプセル化し、ビューモデルはユーザー インタラクションを管理します。 INotifyPropertyChanged は、モデルのデータ中心の性質に合わせています。
-
効率的な変更の伝播: モデル内の変更に直接バインドすることで、UI の更新が即時に行われることが保証され、
反論:
-
モデル内の UI 依存関係: INotifyPropertyChanged は本質的に UI 関連のインターフェイスであり、データに依存しないと思われる依存関係Model.
INotifyPropertyChanged としての ViewModel
引数:
-
単純化されたデータ バインディング: INotifyPropertyChanged の実装ViewModel により、 Model と ViewModel 間の複雑なイベント処理メカニズム。
-
一元的な変更追跡: ViewModel は、UI への変更を追跡および伝達するための単一の連絡先として機能し、複数のイベントが発生するリスクを回避します。の情報源
反論:
-
作業の重複: モデルが INotifyPropertyChanged も実装している場合、冗長になる可能性があります。変化
結論
最終的に、INotifyPropertyChanged を実装する Model と ViewModel のどちらを選択するかは、特定のコンテキストとアプリケーションの要件によって異なります。次の要素を考慮してください:
- モデルが高度にデータ中心であり、独立した変更通知が必要な場合は、INotifyPropertyChanged を実装することが適切である可能性があります。
- ViewModel が中心的な役割を果たしている場合UI インタラクションを管理し、データ バインディングを簡素化する役割を担っているため、INotifyPropertyChanged であることでメリットが得られる可能性があります。実装者。
- 必要な場合にのみインターフェイスを実装することで冗長性を回避します。
MVVM は多様なアプローチを備えた柔軟なフレームワークであり、最適なソリューションはプロジェクトの考慮事項に基づいて異なる可能性があることを覚えておいてください。
以上がViewModel またはモデル: MVVM で INotifyPropertyChanged を実装するのは誰ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。