准备必须以某种方式交互在一起的糟糕耦合的ViewModels的好做法是什么
本文关键字:耦合 ViewModels 是什么 在一起 交互 方式 | 更新日期: 2023-09-27 18:20:40
用例:
- 假设有一个以WPF加MVVM方式构建的工具
- 说到它的外观,它可以与VisualStudioIDE或其他IDE进行比较
- 它包含几个可固定的工具
- 它包含菜单操作和一些额外的页脚信息,这些信息可以根据不同的操作进行更改,例如当项目成功加载时
- 如果使用加载另一个项目,则应在不同的视图上重新加载一些数据
- 我想知道如何实现关注点的良好分离,同时实现模块和视图模型之间的交互
建议的已知解决方案:
- 所有东西都可以组合在一个核心MainViewModel中——不幸的是,它没有给出concrns的分离,代码也不干净,可以比作God对象反模式
- 另一种选择是使用Messenger或EventAggregator,例如嵌入MVVM轻型工具包中的Messenger之类的东西,但根据我的经验,这不是最好的解决方案
- 我考虑过Prism框架,但也许它太夸张了
- 另一种选择是将模块划分为功能性ViewModel,其中一些模块应该注入到另一个模块中,但这并不容易实现
你知道什么好的实践建议吗?
目标:
- 关注点分离
- 每个ViewModel的单一功能责任
- 可测试性
我过去曾使用中介模式进行视图模型之间的交互。它基本上允许您拥有许多对信息和更改感兴趣的"同事"(视图模型),并可以通过中介相互提醒。