当前位置: 首页 > news >正文

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)

http://www.lryc.cn/news/297284.html

相关文章:

  • 制作耳机壳的UV树脂和塑料材质相比劣势有哪些?
  • CSP-202012-1-期末预测之安全指数
  • Doris中的本地routineload环境,用于开发回归测试用例
  • 【开源项目阅读】Java爬虫抓取豆瓣图书信息
  • 基于opencv-python模板匹配的银行卡号识别(附源码)
  • JAVA设计模式之建造者模式详解
  • ElasticSearch查询语句用法
  • 美国服务器如何
  • 远程主机可能不符合glibc和libstdc++ VS Code服务器的先决条件
  • 【python基础】sys.argv[]的使用方法
  • Element-Ui el-date-picker日期传值异常问题解决办法
  • GO语言集成开发 JetBrains GoLand 2023 中文
  • 详细关于如何解决mfc140.dll丢失的步骤,有效修复mfc140.dll文件丢失的问题。
  • 聚簇索引、非聚簇索引、回表、索引下推、覆盖索引
  • ES实战-book笔记1
  • 高防服务器出租的优势及特点
  • NTLM||LM算法lsasswinlogon进程
  • transformer剪枝论文汇总
  • 使用 Ant Design 的 Upload 组件实现图片
  • 【知识图谱--第二讲知识图谱的表示】
  • C语言---计算n的阶乘
  • 材料非线性Matlab有限元编程:初应力法与初应变法
  • QT+OSG/osgEarth编译之八十二:osgdb_obj+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_obj)
  • [office] excel求乘积的公式和方法 #媒体#笔记#经验分享
  • OpenEuler20.03LTS SP2 上安装 OpenGauss3.0.0 单机部署过程(二)
  • 从零开始手写mmo游戏从框架到爆炸(十)— 集成springboot-jpa与用户表
  • Python算法题集_两两交换链表中的节点
  • 米贸搜|Facebook在购物季使用的Meta广告投放流程
  • 前端滚动组件分享
  • 【linux开发工具】vim详解