MVP中的Presenter和MVVM中的View-Model有何区别?

10

我需要澄清一些关于MVP和MVVM设计模式的疑惑。

1)在MVP和MVVM中,是谁更新视图。Presenter / View-Model设置要显示在视图中的数据,还是视图从Presenter / View-Model中检索数据并显示它。

2)Presenter和View-Model彼此有何不同。 “MVVM使用数据绑定来更新视图,而Presenter使用传统方法来更新视图”。是这样吗?

1个回答

11
在MVP中,Presenter通过接口持有View的引用。当Presenter计算新数据时,他负责调用View/Interface上的正确方法来更新UI。
在MVVM中,ViewModel“简单地公开”数据(通常通过LiveData或Rx),以便可以观察它。它不负责谁观察数据以及对数据进行了什么操作。然后,视图在ViewModel中观察该数据,并在数据更改时更新其UI。
为了完全理解MVC、MVP和MVVM之间的区别,建议查看https://www.youtube.com/watch?v=QrbhPcbZv0I

在MVP中,Presenter更新View,在MVVM中,View负责通过从ViewModel获取数据来更新View。我的理解正确吗? - user6250541
1
在这两种情况下,视图(Activity、Fragment等)负责更新视图(例如setText)。然而,区别在于View和Presenter/ViewModel之间的通信。Presenter持有对View的引用,并告诉它进行更新。ViewModel公开数据(因此不引用视图),当数据发生变化时,View决定如何处理观察到的数据。 - NSimon
好的,明白了。有关MVP和MVVM的任何简单示例都可以。例如,在MVVM和MVP模式下获取简单的个人详细信息。 - user6250541

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接