IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> android_基础_mvc/mvp/mvvm简单理解 -> 正文阅读

[移动开发]android_基础_mvc/mvp/mvvm简单理解

一面android实习生遇到的问题

前言

mvc

首先Android也好,非后台也好,我个人觉得还是有必要学习一下后台流程的,受益匪浅…

什么是mvc呢?说实话我也是晕晕的,看了别人的博客还是晕晕的,学习过jsp的人应该都或多或少接触了javabean/entity ,servlet,web页面,其实我觉得结合项目去理解mvc,mvp等更好吧。

使用jsp搭建一个简单后台,需要有service层,dao层,数据库层,那么我想着的是mvc是不是可以理解为就是一种结构呢,规范你的项目的结构呢?

在这里插入图片描述

view(web界面进行交互并接收用户如输入等操作后的数据)
controll(逻辑处理层):可以用来接受web端的请求,取出数据,封装数据,要求model改变状态
model(数据持久化层):当数据变动通知更改视图,用户可以得到视觉上的反馈

是不是和我们项目很相似…那么mvc是不是代表着流程的规范,我们需要做的或者我们一直以来都在按这套规范做事…view层用户操作,controll层类似servlet进行对数据封装,并将封装后的数据作为参数传入持久化层,当数据库数据发生改变,通知view进行视图更新,那图也就很好理解了

mvp

首先我们也是从项目出发,看过谷歌demo的童鞋肯定有看到谷歌的流程很规范的,XxxRepository和XxxService运用而生…

在这里插入图片描述

乍一看貌似只是将controll层改为了presenter而已

那么为什么需要mvp 呢?从项目来说,既然我们的controll用来进行一些业务逻辑,那么我专门用来处理逻辑就好了呀,我为什么要管数据呢,于是我需要新建一个类来专门用来作为数据源,进行数据操作等。android来说的话,若数据来自数据库可以创建一个XxxRepository类进行管理,若来自于网络可以建一个XxxService来专门进行数据的获取,那么每次我们的presenter层只需要通过新建的这两个类来获取数据,再对数据进行封装持久化,那这更偏向于单一原则了。。。

注意repository只负责拿到数据,于是乎为了实现单一原则,repository里面需要拿到多个dao层的引用作为实际的数据获取和持久化操作,完全和项目相关

随着repository类的加入Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,也就是说view与model的通信完全是通过Presenter(mvc中的controll)来操作的,从而使得在变更View时候可以保持Presenter的不变,这样就可以重用

mvvm

在这里插入图片描述

学过jetpack的童鞋都知道databinding

个人感觉mvvm无疑只是在mvp的基础上加入databinding实现视图与viewmodel(presenter)的一个双向绑定,数据改变通知view改变,view改变通知数据改变

总结

无论是不用过于把思路放在设计模式上,感觉很高大上,但实际也都是为码农项目服务而已…把思路转向实际项目即可…

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 10:17:52  更:2021-09-26 10:20:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:44:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码