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 来写