我读到了一个关于在MVVM设计中实现事件聚合模式可以帮助解耦ViewModels之间通信的文章。
我认为事件聚合器确实是一个很好的想法。但仔细一想,事件聚合器只被ViewModel使用吗?Model能够发布和订阅事件吗?
通过这种方式,也许ViewModel和Model之间的数据变化可以通过事件聚合器相关联。这可能允许一个ViewModel从多个Models中检索信息,而不需要将ViewModel存储到所有Models的引用中。
如果我这样做,会导致整个架构混乱并最终成为反模式吗?最佳实践是什么?
编辑:
我认为我应该解释一下为什么我在问这个问题。我看到了三个可能存在的问题:
首先,使用依赖注入(DI),我的ViewModel包装了Model。我的ViewModel可以与Model通信。但是,反过来就不行了。因此,如果我的Model自己或外部有一些更改,它需要一种方法来通知它的ViewModel。
其次,除了ViewModel必须与其他ViewModel通信外,我认为Models需要像ViewModels一样频繁地与其他Models通信。这导致了我认为我可以将所有内容都链接到事件聚合器。
第三,我发现有些情况下一个单独的ViewModel需要从多个Models中获取信息。但是通过ViewModel的构造函数进行依赖注入,它只能从一个Model中读取。