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

时间:2011-12-21 15:10:52

标签: wpf silverlight xaml mvvm

我看过Jose Smith视频并阅读了一些关于MVVM的教程,但我不明白MVVM是如何松散耦合的,即View和ViewModel。 (仍然是MVVM的新手,只是尝试用它构建情侣项目。)

在MVP中,所有View,Model,Presenter都有界面,因此可以替换或模拟单元测试。

但是在MVVM中,我没有看到人们在View或ViewModel上使用界面。 根据我的理解,ViewModel从Model中抽象出数据,并将其作为属性公开给View,并对模型进行业务逻辑和数据操作。

所以说如果我使用带有.SaveData()方法的ViewModel和View使用的一些属性,如果它们没有接口,如何替换其他ViewModel?

有人可以向我解释MVVM是如何松散耦合的?

1 个答案:

答案 0 :(得分:1)

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

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

注意:在MVVM中,拥有SaveDataCommand属性而不是裸SaveData方法是不恰当的(尽管当然命令是作为方法实现的)。