0%

Android App 架构模式

MVC

Model-View-Controller (MVC) 定义了三种组件:

  • Model 模型层,包含了数据对象,数据库实体类和数据操作相关的业务逻辑;
  • View 视图层,使用模型层渲染数据成用户可看到的界面
  • Controller 控制层,作为MVC模式的核型组件,它封装了系统的主要逻辑并且控制视图层与模型层

原本作为桌面应用程序和 Web 应用使用模式,MVC

或:

Android 理论上的 MVC

View显示是由Controller更新的,而由于Android里的View仅仅是静态XML布局,Android 的View不能实现更新逻辑,因此导致部分视图逻辑(比如视图的显示与隐藏)由Activity承担,因此实际上 Android 下的 MVC 如下:

Activity 同时承担视图层和控制层的工作,不仅使 Activity 类变得庞大,还使组件耦合后的 Activity 单元测试困难。

MVP

Model View PresenterMVP)定义三种组件:

  • Model 模型层,包含了数据对象,数据库实体类和数据操作相关的业务逻辑;
  • View 视图层,显示 UI 并通知展示层用户操作
  • Presenter 展示层,与模型层和视图层通信并处理展示逻辑

由于 MVC 模式下 Activity 包含了视图层和控制层,并非正确的 MVC 实现,因此应用 MVP 模式,将 Activity 内控制层的代码迁移出来,

MVVM

Model-View-ViewModel(MVVM) 定义三种组件:

  • View 显示 UI,通知其他层用户的操作
  • ViewModel 向(多个) View 提供信息
  • Model 从数据库中获取信息并向 ViewModel 提供信息

ViewModel不会包含View的引用,仅向View提供信息;但提供View可以监听的事件。