在ViewModel之外的类中实现IEventAggregator是否破坏MVVM
本文关键字:是否 IEventAggregator MVVM 实现 ViewModel | 更新日期: 2023-09-27 18:07:13
当涉及到在后台工作的处理程序时,在处理程序实例上实现IEventAggregator是否合法,然后通知ViewModel进度?在我看来,处理程序根本不是模型。
例如,如果我们得到一个类MyHandler
,它正在使用函数MyFunction
启动线程MyThread
,该函数不断报告处理程序中发生的进度。
我研究了很多这是否会破坏MVVM,但一无所获。这是怎么考虑的?
MVVM不是一个严格的规范,虽然在模式的更广泛方面可能达成了共识,但很少有人会在实现细节上达成一致。
也许在您的案例中要问的问题是:视图模型是否可以在NUnit或SpecFlow中独立提出,并以良好的覆盖率进行测试。如果答案是"是",那么您可以放心地为模式提供一个大目标。其次,你可以问处理者是否严格意义上是一个出版商,它的行为不需要特别了解订阅者是谁。如果答案是肯定的,这是另一个有利的迹象。最后,尽管需要更新和设置一些绑定,视图模型是否可以与模拟处理程序交互?这将是另一个有利的迹象。
在您的情况下,一些开发人员可能会选择使用来自Reactive Extensions的IOobservable作为发布工具(我认为自己属于该组(,但在这个级别上,这从根本上是一个实现决策,而不一定是一个设计决策。
模块性、可测试性和透明性在构建健壮的应用程序方面发挥着与MVVM模式一样重要的作用。如果你正在实现这些目标,那么它是否符合某人对MVVM的概念将完全取决于你的沟通/说服能力。