MVC

描述

  • 它是一种 软件架构模式
  • Model(核心)
    • 负责数据访问
    • 数据库访问
    • 网络访问
    • 缓存数据访问
    • ...
  • Control
    • 负责处理消息
    • 处理逻辑
  • View
    • 负责页面展示

核心

关注点分离
分层思想
解耦合

流程

  • 界面(View)触发事件->控制器(control)响应逻辑处理,触发数据更新->模型(Model)响应数据变化
  • 模型(Model)数据变化->控制器(control)响应逻辑处理->界面(View)界面更新

当前问题

  • 需求变化后,三层可能都需要修改
  • view与controller的紧密耦合以及controller粒度难以把控
  • android中
    • Activity逻辑暴增,维护困难

Android中的实现

  • Model
    • 实体Bean
  • View
    • xml布局文件
  • Control
    • Activity中逻辑处理

MVP

描述

  • Model(核心)
    • 负责数据访问
    • 数据库访问
    • 网络访问
    • 缓存数据访问
    • ...
  • Presenter
    • 负责处理消息
    • 负责逻辑
  • View
    • 负责页面展示
  • 主要是通过接口来定义View与Presenter的交互
  • Model不直接操作界面
  • 一个Presenter对应一个view
  • 一个view可以对应多个Presenter
  • View是被动的

与MVP的差异

  • MVP中的P层严格实行界面与数据分离,MVC中的View层可以直接访问Model

Android中的实现

  • Model
    • 实体Bean
  • View
    • xml布局文件和activity
    • 实现部分逻辑
  • Presenter
    • 逻辑处理
    • view与Model的交互

当前问题

  • 接口暴增,增加维护成本
  • 增加复杂度

MVVM

Android中的实现

  • Model
    • 实体Bean
  • View
    • xml布局文件和activity
  • ViewModel
    • 双向绑定
    • 逻辑处理
    • view与Model的交互

当前问题

  • 不建议使用双向绑定,调试困难

优点

  • 数据驱动
  • 低耦合度
  • 自动更新界面