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 消除了复杂的需要Model 和 ViewModel 之间的事件处理机制。
-
集中更改跟踪: ViewModel 作为跟踪和传播 UI 更改的单点联系,避免了多个来源的风险的
反驳:
-
重复工作:如果模型也实现了 INotifyPropertyChanged,则可能会导致冗余改变
结论
最终,在实现 INotifyPropertyChanged 的 Model 或 ViewModel 之间进行选择取决于特定的上下文和应用程序要求。考虑以下因素:
- 如果 Model 高度以数据为中心,并且需要独立的更改通知,那么实现 INotifyPropertyChanged 可能是合适的。
- 如果 ViewModel 扮演中心角色在管理 UI 交互和简化数据绑定方面发挥着重要作用,它可以从成为 INotifyPropertyChanged 实现者中受益。
- 通过以下方式避免冗余仅在必要时实现接口。
请记住,MVVM 是一个具有多种方法的灵活框架,最佳解决方案可能会根据项目考虑因素而有所不同。
以上是ViewModel 或 Model:谁应该在 MVVM 中实现 INotifyPropertyChanged?的详细内容。更多信息请关注PHP中文网其他相关文章!