从Android角度看MVC、MVP、MVVM

Posted by Tfly on 2019-07-10

名词解释

业务逻辑:对数据访问操作的简单的封装(参考)

我的通俗理解是对数据访问操作的访问过程。有两个步骤,第一个是是接口参数准备,第二个是调用接口访问

Model:是应用程序中用于处理应用程序数据逻辑的部分
View:是应用程序中处理数据显示的部分
Cotroller:是应用程序中处理用户交互的部分(Modle与View的交互)

MVC参考

对比

1、MVC

对应角色:

  • M:Model
  • V:xml文件
  • C:Activity或Fragment

缺陷:从Android角度来看,C非常臃肿,M、V、C三者耦合严重

2、MVP

对应角色:

  • M:Model
  • V:Activity或Fragment
  • P:presenter

优点:
1、相较MVC,Presenter作为View和Modle之间的桥梁,使业务逻辑和View隔离
2、View和Presenter之间通过接口引用,Presenter不依赖具体View,可达到重用的目的

缺点:View的接口粒度不好把握。设计的太细,容易使Presenter和View形成一对一关系,导致Presenter重用性降低;太粗,Presenter对View的渲染能力又降低。

3、MVVM

View和ViewModel之间的箭头表示双向数据绑定,自动同步

对应角色:

M:Model
V:View
VM:ViewModel

优点:
1、View能够感知数据变化,并作出变化
2、ViewModel不依赖View,彻底与View解耦(解决了MVP的缺点)