MVC、MVP、MVVM是 Android 面试中经常被问到的问题,对于每位打算从事 Android 开发的人来说,这部分的知识都是必须掌握的。

下面就由我来为大家整理一下这部分的知识吧。

MVC

MVC 是 Android 默认的设计,MVC将代码分为三个部分:

  • Model: 负责管理业务数据逻辑 如网络请求 数据库处理
  • View: Layout中的XML文件
  • Controller: Activity文件 负责处理表现逻辑

MVC进行了代码的分离,但是分离程度不够,Activity依旧还需要处理UI,处理用户交互,承担部分View的角色,且Model 和 View 仍存在一定的交叉,隔离度不够。

MVP

MVP将代码分为三个部分:

  • Model:负责管理业务数据逻辑 如网络请求 数据库处理
  • View:Activity 和 Layout中的XML文件
  • Presenter:负责处理表现逻辑

将Activity的表现逻辑分离出来由Presenter进行管理,逻辑更加清晰,不过增加了各种回调的接口,代码变得更加复杂,不利于维护,而且互相依赖会导致互相影响。

MVVM

MVVM将代码分为三个部分:

  • Model:负责管理业务数据逻辑 如网络请求 数据库处理
  • View:Activity 和 Layout中的XML文件
  • ViewModel:负责处理表现逻辑 并将数据给可观察数据容器

通过观察者模式监听数据的变化,有效规避了MVP的双向依赖,但是会导致多数据流的问题,缺少唯一修改源,不易于追踪。

讲清MVC、MVP、MVVM,看这一篇文章就够了相关推荐

  1. js层级选择框样式_IOS和JS的交互,看这一篇文章就够了

    IOS和JS的交互,看这一篇文章就够了 创作不易,请珍惜,之后会持续更新,不断完善 Demo地址 目录 WKWebView使用.JS的交互 WKWebView使用.JS的交互 演示(本来想贴张GIF作 ...

  2. 关于VR产品的前世今生,看这一篇文章就够了

    关于VR产品的前世今生,看这一篇文章就够了(转) 文/胡勇 即使最富质疑精神最冷静的人也无法漠视现在的 VR/AR 掀起的狂潮,这个从科技圈蔓延到实业界最后席卷大众的想象力的狂欢正以前所未有的态势改变 ...

  3. 五年程序员是如何玩转闲鱼无货源的,只看这一篇文章就够了

    今天的内容方向主要是基础篇-进阶篇 ,优化了一下操作方法,尽量细化,让你看完这篇内容之后从入门到大神. 基础篇: 注册这些基础的之前说过,这次就不说了,这次说下如何养号. 完善个人资料(头像.昵称.简 ...

  4. 动态规划——01背包问题 看此一篇文章就够了

    本文讲述经典算法--动态规划的 常见问题 01背包  一篇文章带你学会01背包问题,妈妈再也不担心我遇到01背包了!!! 问题描述 有n个物品,它们有各自的体积和价值,现有给定容量m的背包,如何让背包 ...

  5. 产品经理如何进行数据分析?看这一篇文章就够了

    一.数据分析的层级 产品的数据分析经常会遇到这样的问题:只有数据,没有分析.仅仅是描述数据,告诉你产品发生了什么. 比如次日留存率只有5%,这个数据偏低,可以看出该功能的用户粘性不好. 然后呢?往往就 ...

  6. Dubbo详解,用心看这一篇文章就够了【重点】

    1.1 Dubbo概述 Dubbo是阿里巴巴开源的基于 Java 的高性能RPC(一种远程调用) 分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 每天为2千 ...

  7. 什么是Docker?看这一篇文章就够了

    作者 | 码农的荒岛求生 来源 | 程序员小灰(ID: chengxuyuanxiaohui) 程序员,应该怎样理解docker? 容器技术的起源 假设你们公司正在秘密研发下一个"今日头条& ...

  8. 深入理解MySQL底层架构,看这一篇文章就够了!

    前面我们已经讲解了,我们的系统是如何与MySQL打交道的?,我们开发的系统与MySQL本身,都维护的有线程池,管理了所有连接.看下图回顾下: 图1 我们的系统是如何与MySQL打交道的? 从上图我们可 ...

  9. java 计算机概述看这一篇文章就够了

    第一章 计算机概述 第1节 计算机介绍 1 广义上: 凡是可以帮助我们完成计算的工具统称为计算机(比如 算盘.计算器等...) 狭义上: 当前说计算机一般情况特指电子计算机(电脑) 第2节 计算机历史 ...

最新文章

  1. linux脚本做分数计算,shell脚本,计算学生分数的题目。
  2. 超专业解析!10分钟带你搞懂Linux中直接I/O原理
  3. 高仿书旗小说 Flutter版,支持iOS、Android
  4. Docker入门简介
  5. JSON 分析数据格式
  6. [BZOJ] 1637: [Usaco2007 Mar]Balanced Lineup
  7. Python使用threading实现多线程
  8. python网页部署-想用python3做web开发的一些不知(主要是环境部署),求解!
  9. 大数据之-Hadoop3.x_MapReduce_二次排序案例---大数据之hadoop3.x工作笔记0116
  10. 特斯拉进入Autopilot 2.0时代,高举“普通雷达”旗帜!
  11. 除系统分区外未找到其它非系统分区导致软件无法运行解决方案
  12. openSSH服务及其应用
  13. 自己对行业未来发展的认知_我们正在建立的认知未来
  14. 基于数码相机拍照图像分析的植被覆盖率(FVC)计算软件
  15. Python官方文档中文版在线教程
  16. 项目分享| 自制巡线机器人
  17. 线性动力学问题(二)
  18. python微博爬虫程序_基于Python的新浪微博爬虫程序设计与研究
  19. 智能计算/计算智能、仿生算法、启发式算法的区别与关系?
  20. 人脸 解锁 android开发,零基础开发Android人脸识别应用

热门文章

  1. ThinkPHP Lang多语言本地文件包含漏洞(QVD-2022-46174)漏洞复现
  2. 基于Pyhton的二维离散正弦变换(DST)及其反变换(IDST)
  3. 百问网七天物联网课程学习笔记——单片机时钟
  4. 学习通作业/考试每天微信提醒:使用pushplus和华为云函数
  5. 数据库,表数据的插入
  6. 安卓7.0 申请相机及读写权限
  7. 2021 年 MathorCup 高校数学建模挑战赛——大数据竞赛B题
  8. 【ubuntu】首选项和应用程序命令(preference application)
  9. 数学笔记9——牛顿迭代法
  10. 梯度下降原理(SGD,Adam,BGD,momentum,Adagrad,NAG)