Android之MVP与MVC、MVVM的区别

时间:2022-12-21 21:14:58

Android之MVP与MVC、MVVM的区别

1.MVC特点:

  • 用户可以向View发送指令,再有View直接要求Model改变状态
  • 用户也可以直接向Controller发送指令,再由Controller发送给view
  • Controller起到事件路由的作用,同时业务逻辑都部署在controller中

MVC图示:

Android之MVP与MVC、MVVM的区别

由上图可以看到,MVC的耦合性还是相对较高,View可以直接访问model,导致3者之间构成回路,因此MVP与MVC最主要的区别就是,MVP中的View不能直接访问Model,需要通过Presenter发送请求,View与Model不能直接通信,基本达到了解偶。

2.MVVM特点:

MVVM图示:
Android之MVP与MVC、MVVM的区别

MVVM与MVP非常相似,唯一的区别是View和Model进行双向绑定,两者之间有一方发生变化则会反应到另一方上。而MVP与MVVM的主要区别则是,MVP中的View更新需要通过Presenter,而MVVM则不需要,因为View与Model进行了双向绑定,数据的修改会直接反应到View角色上,而View的修改也会导致数据的变更,此时,ViewModel角色需要做的只是业务逻辑的处理,以及修改View或者Model的状态。MVVM模式有点像ListView与Adapter、数据集的关系,这个Adapter就是ViewModel角色,它与View进行了绑定,又与数据集进行了绑定,当数据集发生变化时,调用Adapter的notifyDataSetChanged之后View就能直接更新了,他们直接没有直接的耦合,是的ListView变得更灵活。

以上就是他们的主要区别了。