【问题标题】:How is MVVM loose coupling compare to MVP?MVVM 松耦合与 MVP 相比如何?
【发布时间】:2012-01-25 09:25:52
【问题描述】:

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

在 MVP 中,所有 View、Model、Presenter 都有接口,因此可以替换或模拟它们以进行单元测试。

但在 MVVM 中,我看不到人们在 View 或 ViewModel 上使用界面。 据我了解,ViewModel 从 Model 中抽象出数据并作为属性公开给 View,并通过模型进行业务逻辑和数据操作。

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

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

【问题讨论】:

    标签: wpf silverlight xaml mvvm


    【解决方案1】:

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

    除此之外,“松散耦合”的定义是...松散的,因此如果您需要澄清其他内容,则需要更具体。

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

    【讨论】:

    • 我明白了,但是有没有办法将页面中的视图添加为 xaml 中的接口类型?还是大多数人只会以编程方式添加 View 和 ViewModel?就像在构造函数中添加 View 和链接到 ViewModel 一样。 (希望你明白我的意思)
    • @KingChan:是的,这主要是通过编程完成的(依赖项将通过 DI 容器注入到每个对象中)。
    • 谢谢现在一切都有意义了! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 2017-05-09
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多