目录

MVC / MVP /MVVM

是啥

是三种不同的架构, 但其实 Google 官方并没有给出这三个词的明确定义, 我这里只是结合民间普遍定义对其进行解释

MVC

  • Model: 业务逻辑和数据源
  • View: 视图, 在 Android 开发中主要指 XML layout 文件, 也包含 Activity/Fragment 处理交互
  • Controller: 通常指 Activity/Fragment

MVP

  • Model: 数据源
  • View: 指 Activity/Fragment 用于给用户展示和处理交互
  • presenter: 通过 Model 存取数据, 连接 View 和 Model

在实际开发中, 我们可以用接口来定义一些规范, 然后让我们的 View 和 Model 实现它们, 并借助 Presenter 进行交互即可

MVVM

  • Model: 数据源
  • View: 指 Activity/Fragment 用于给用户展示和处理交互, 会驱动 ViewModel 从 Model 获取数据
  • ViewModel: 将 Model 和 View 进行关联, 当获取到数据之后, 会通过绑定(如DataBinding)刷新界面
MVVM 特点?
  • 低耦合:View 可以独立于 Model 变化和修改
  • 可重用性:多个 View 可以共用一个 ViewModel
  • 独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewModel), 设计人员可以专注于页面设计
  • 可测试:界面测试可以针对 ViewModel 来写