ViewModel 或 Model 應該在 MVVM 中實作 INotifyPropertyChanged 嗎?
在 MVVM 領域內,ViewModel 或 Model 實作 INotifyPropertyChanged 之間的選擇引發了爭論。傳統的 MVVM 實作通常將此職責指派給模型,而 Josh Smith 的 CommandSink 範例則不同,讓 ViewModel 實作它。
模型為INotifyPropertyChanged
參數:
-
清晰分離關注點: Model 封裝邏輯和資料,而ViewModel 管理使用者互動。 INotifyPropertyChanged 符合模型以資料為中心的性質。
-
高效的更改傳播:直接綁定到模型中的更改可確保UI 更新立即發生,並且
反駁:
-
模型中的UI 依賴: INotifyPropertyChanged 本質上是一個 UI 相關的接口,引入對所謂的數據不可知論的依賴Model.
ViewModel as INotifyPropertyChanged
參數:
-
簡化的資料綁定: 實作INotifyPropertyChanged ViewModel 簡化的資料綁定:
實作INotifyPropertyChanged ViewModel 簡化的需要Model 消除了複雜的需要Model 和檢視事件處理機制。 -
集中更改追蹤:
ViewModel 作為追蹤與傳播 UI更改的單點聯繫,避免了多個來源的風險的
反駁:
-
重複工作:
如果模型也實現了INotifyPropertyChanged,則可能會導致冗餘改變
結論
最終,在實作 INotifyPropertyChanged 的 Model 或 ViewModel 之間進行選擇取決於特定的上下文和應用程式要求。考慮以下因素:
- 如果 Model 高度以資料為中心,並且需要獨立的變更通知,那麼實作 INotifyPropertyChanged 可能是合適的。
- 如果 ViewModel 扮演中心角色它在管理 UI 互動和簡化資料綁定方面發揮著重要作用,它可以從成為 INotifyPropertyChanged 實現者中受益。
- 透過以下方式避免冗餘僅在必要時實現介面。
請記住,MVVM 是一個具有多種方法的靈活框架,最佳解決方案可能會根據專案考慮因素而有所不同。
以上是ViewModel 或 Model:誰應該在 MVVM 中實作 INotifyPropertyChanged?的詳細內容。更多資訊請關注PHP中文網其他相關文章!