什么是MVC/MVP/MVVM?

  • 概念
  • 1.MVC是什么?
  • 2.MVP是什么
  • 3.MVVM是什么
  • 原理
  • 1.MVC的特点是什么
  • 2.MVP的特点是什么
  • 3.MVVM的特点是什么


概念

1.MVC是什么?

MVC模式中,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View的定义比较清晰,就是用户界面。
在Android中 Model一般代表业务模型和逻辑, View代表了界面(XML和控件),Controller代表了Activity,管理数据和界面的功能。

androidmvp和mvc区别 android mvvm模式和mvc的区别_android

2.MVP是什么

MVP的全称为Model-View-Presenter,Model提供数据,View负责显示,Controller/Presenter负责逻辑的处理。MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。
Model - 实体数据 View - Activity界面 Presenter-逻辑处理

androidmvp和mvc区别 android mvvm模式和mvc的区别_androidmvp和mvc区别_02

3.MVVM是什么

MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。
Model- 数据 View -界面层 ViewModel- 界面与数据的绑定

androidmvp和mvc区别 android mvvm模式和mvc的区别_MVC_03

原理

1.MVC的特点是什么

优点:传统的开发框架,各个模块的分工较为明确
缺点:随着项目功能的扩展,使得Activity的功能不再明确,其担任的职责越来越大,View视图和Controller控制器联系越来越紧密,代码复用性降低。较早的项目中Activity中既有数据的请求,又有adapter数据的展示更新,以及各种弹窗的处理,复用性比较差,代码也臃肿。

2.MVP的特点是什么

优点:降低了耦合,界面和逻辑分离,业务接口单独一个模块代码清晰,可以多重实现
缺点:一旦功能增多,业务接口需要大量编写

3.MVVM的特点是什么

优点:双向绑定,当Model变化时,ViewModel也会随之改变,View也会自动变化
缺点:难调试,界面布局绑定了model,难复用