Wpf MVVM松耦合与MVP相比如何?

Wpf MVVM松耦合与MVP相比如何?,wpf,silverlight,xaml,mvvm,Wpf,Silverlight,Xaml,Mvvm,我看了Jose Smith的视频并阅读了一些关于MVVM的教程,但我不明白MVVM是如何松耦合的,即视图和视图模型。(MVVM还是新手,只尝试使用它构建项目。) 在MVP中,所有视图、模型、演示者都有接口,因此可以替换或模拟它们进行单元测试 但在MVVM中,我没有看到人们在视图或视图模型上使用界面。 据我所知,ViewModel将数据从模型中抽象出来,并作为属性公开给视图,并具有业务逻辑和模型的数据操作 假设我有ViewModel with.SaveData()方法和视图使用的一些属性,如果它们

我看了Jose Smith的视频并阅读了一些关于MVVM的教程,但我不明白MVVM是如何松耦合的,即视图和视图模型。(MVVM还是新手,只尝试使用它构建项目。)

在MVP中,所有视图、模型、演示者都有接口,因此可以替换或模拟它们进行单元测试

但在MVVM中,我没有看到人们在视图或视图模型上使用界面。 据我所知,ViewModel将数据从模型中抽象出来,并作为属性公开给视图,并具有业务逻辑和模型的数据操作

假设我有ViewModel with.SaveData()方法和视图使用的一些属性,如果它们没有接口,我如何用其他ViewModel替换它们


有人能给我解释一下MVVM是如何松耦合的吗?

MVVM也应该在接口方面实现。如果您有一个类
MyViewModel
,那么它还将实现
IMyViewModel
,以便可以对其进行模拟以进行测试。视图也是如此。所以在这个特定的意义上,MVVM和MVP并没有什么不同

除此之外,“松耦合”的定义是。。。松散,所以如果还有其他事情需要澄清,你需要更具体一些


注意:在MVVM中,通常使用
SaveDataCommand
属性,而不是简单的
SaveData
方法(尽管该命令当然是作为一种方法实现的)。

我明白了,但是有没有办法将页面中的视图添加为xaml中的接口类型?或者大多数人只是以编程方式添加视图和视图模型?类似于在构造函数中添加视图并链接到ViewModel。(我希望你能理解我的意思)@KingChan:是的,这大部分是通过编程完成的(依赖项将通过DI容器注入每个对象)。谢谢,现在一切都有意义了!:)