我读到了在 MVVM 设计中实现的事件聚合器模式可以帮助解耦 ViewModel 之间的通信。
我认为事件聚合器确实是一个好主意。但是再想一想,事件聚合器是否仅由 ViewModel 使用?模型可以发布和订阅事件聚合器中的事件吗?
通过这个,ViewModel 和 Model 之间的数据更改可能可以通过 EventAggregator 关联起来。这可能会允许一个 ViewModel 从多个 Model 中检索信息,而无需 ViewModel 存储对所有 Model 的引用。
如果我这样做,是否会导致整个架构混乱并最终成为反模式?最佳做法是什么?
编辑:
我想我应该解释一下我为什么要问这个问题。我看到三个可能的问题:
首先,使用 DI,我的 ViewModel 包装了模型。然后我的 ViewModel 可以与我的模型通信。然而,反之亦然。因此,如果我的模型本身或外部有一些变化,它需要一种方法来通知它的 ViewModel。
其次,除了 ViewModel 必须与其他 ViewModel 通信之外,在我看来,Model 与其他 Model 的通信与 ViewModel 一样多,甚至更多。这些导致我认为我可以将所有内容都链接到 EventAggregator。
第三,我发现在某些情况下,单个 ViewModel 需要从多个 Model 中提取信息。但是通过 ViewModel 的构造函数的依赖注入,它只能从一个模型中读取。