首页 >后端开发 >C++ >ViewModel 或 Model:谁应该在 MVVM 中实现 INotifyPropertyChanged?

ViewModel 或 Model:谁应该在 MVVM 中实现 INotifyPropertyChanged?

Barbara Streisand
Barbara Streisand原创
2025-01-05 04:52:40698浏览

ViewModel or Model: Who Should Implement INotifyPropertyChanged in MVVM?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn