Android中的MVVM

演变

开发常用的框架包括MVC、MVP和本文的MVVM,三种框架都是为了分离ui界面和处理逻辑而出现的框架模式。mvp、mvvm都由mvc演化而来,他们不属于某种语言的框架,当存在ui页面和逻辑代码时,我们就可以使用这三种模式。

model和view分别指的是数据模型视图,前者用于存储数据,后者用于展示前者的数据。

在不同的框架模型中,model和view可能会有所差别,但基础功能基本不变,差别在于数据的传输方式。

MVC架构

即model模型、view视图、controller控制器,是最早出现的架构。

在Android中,没有单独分离controller即业务层(也被称为服务层、逻辑层,个人认为逻辑层是最符合的名称),而是将activity或fragment直接作为controller。同时他们即充当了view的角色,也直接操作model中的数据,有时候一个activity或fragment上千行代码,十分臃肿。

而对于一般的mvc而言,controller需要处理用户的输入和事件,并直接更新视图,导致视图和控制器耦合极强。

MVP架构

基于MVC架构的改进,将View和Model之间的直接关系去除,并引入了新的层级Presenter代替原本的Controller。

这一改进完成了Model和View的解耦。但在实际开发中,该架构三个模块之间的通信是靠接口实现的,这导致定义的接口和方法会非常多,即使是一个简单的页面功能也会如此。

MVVM架构

基于数据绑定的架构模式,将View与Model之间进一步解耦,引入了ViewModel。

MVVM在MVP的基础上,添加了双向绑定,使得View可以感知到ViewModel中的数据变化,View也可以感知到ViewModel的数据变化。此时,当Model中的数据发生改变时,View会自动更新,这种数据驱动方式减少了大量手动更新UI的代码。

而实现这一数据绑定,我们要用到Android中的DataBinding,他是一种数据双向绑定框架。

实现

视图绑定(ViewBinding)

数据绑定(DataBinding)

相关推荐

  1. VueMVVM

    2024-02-08 13:18:01       42 阅读
  2. WPFMVVM常用框架

    2024-02-08 13:18:01       21 阅读
  3. iOSMVVM设计模式

    2024-02-08 13:18:01       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-08 13:18:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-08 13:18:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-08 13:18:01       82 阅读
  4. Python语言-面向对象

    2024-02-08 13:18:01       91 阅读

热门阅读

  1. C++ 设计模式之单例模式

    2024-02-08 13:18:01       46 阅读
  2. 学习C语言的第4天

    2024-02-08 13:18:01       49 阅读
  3. B2071 余数相同问题(洛谷)

    2024-02-08 13:18:01       62 阅读
  4. Python数据容器(上)——list(列表)

    2024-02-08 13:18:01       49 阅读
  5. 快速重启网络服务 IP Helper

    2024-02-08 13:18:01       44 阅读
  6. git恢复rebase过程中遇到权限问题和丢失的提交

    2024-02-08 13:18:01       45 阅读
  7. python加密通信的优化1.0

    2024-02-08 13:18:01       46 阅读
  8. 数据分析基础之《pandas(6)—高级处理》

    2024-02-08 13:18:01       48 阅读
  9. 【原创】MQTT开发笔记(四)- 压力测试

    2024-02-08 13:18:01       55 阅读
  10. Why React Doesn‘t Need jQuery?

    2024-02-08 13:18:01       51 阅读