为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 【九月打卡】第15天 MVC、MVP、MVVM...

【九月打卡】第15天 MVC、MVP、MVVM 架构设计模式面试问题

2022.09.19 22:21 402浏览

课程名称BAT大牛亲授技能+技巧 Android面试快速充电升级
课程章节:Android基础相关面试问题
主讲老师DocMike

课程内容

MVC 架构模式

MVC 架构模式的主要目的是为了实现视图和数据的分离。MVC 的特点是耦合性低,可扩展性好,模块职责划分明确。这对于大型开发项目来说,方便进行模块划分。MVC 在 Android 中的定义:

  • M,业务逻辑处理;
  • V,处理数据显示的部分;
  • C,Activity 处理用户交互问题。

在 MVC 种,View 和 Model 之间是可以直接交互的,这样体现在代码中就会导致 View 和 Model 的耦合性提高。

在 Android 中如果把对数据库文件、磁盘缓存文件、网络文件的处理看作 M 层,页面的布局 xml 和 Activity 中的控件看作 V 层,Activity 还扮演 Controller 的角色,这样的结果就是 Activity 中的业务逻辑会比较重,这也是 MVC 模式在 Android 中的局限性。

MVP 架构模式

MVP 架构模式是 MVC 架构模式的演化版本,针对 MVC 模式在 Android 中的局限性,即 Activity 同时扮演着 V 和 C 的角色,违背了软件设计的单一职责原则。随着项目的进一步发展,Activity 中的逻辑会越来越复杂,代码也会越来越臃肿,维护的成本也会升高。MVP 在 Android 中的定义:

  • M,依然是业务逻辑和实体模型;
  • V,对应 Activity,负责完成 View 的绘制以及与用户的交互;
  • P,负责完成 View 与 Model 之间的交互;

MVP 模式将 MVC 中 Activity 扮演的 Controller 的角色放在 P 层来完成,将 V 层和 M 层进行了隔离,P 层负责完成 V 层和 M 层的交互。MVP 模式的执行流程归纳起来可以总结为:

  • V 层收到用户的操作;
  • V 层把用户的操作交给 P层;
  • P 层直接操作 M层进行业务逻辑处理;
  • M 层处理完毕后,通知 P 层;
  • P 层收到通知后,去更新 V层;

在 Android 中,MVP 实现了对 Activity 的解耦,将模型和视图完全分离,实际项目中视图的更新频率要高于模型,使用 MVP,可以很方便的修改视图而不会影响模型。

MVVM 架构模式

MVVM 模式在 MVP 的基础上,进一步降低耦合,ViewModel 层不在持有 View 层的引用,当 View 层发生改变时,只要 View 层绑定的数据不变,那么 ViewModel 层就不需要改变。体现在代码中,Activity 的代码可以做到非常简洁。MVVM 在 Android 中的定义:

  • V,对应 Activity 和 xml,负责 View 的绘制以及与用户的交互;
  • M,实体模型;
  • VM,负责完成 View 和 Model 间的交互,负责业务逻辑。

MVVM 是 Google 官方推荐使用的框架,结构清晰,职责明确,真正做到了模块间充分解耦,数据处理逻辑都是独立于 UI 层,ViewModel 只负责提供数据和处理数据,不会持有 View 层的引用;View 层只负责对数据变化的监听,不会处理任何跟数据相关的业务。View 层的 UI 发生变化时,也不需要像 MVP 模式那样修改对应接口和方法实现。

课程收获

平时将精力更多的是放在业务需求的实现上,这一章对 Android 中常提到的三种框架做了详细的介绍,通过对比体现各自的特点,怎样将各个框架的优点应用到自己的业务上,怎样让框架更好的为自己服务,是需要开发人员去思考的问题。不能陷入为了框架而过渡设计,只有合适的才是最好的。
图片描述
图片描述

点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
6
获赞与收藏
12

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

50篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

146篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消