MVC-MVP-MVVM
Android中常用的三种框架
面试,优化代码,提高开发效率
不使用框架,所有的代码都是由Activity承担
简介:Android大型项目中,为了达到模块内部的高聚合和模块间的低耦合性,提高项目的可维护性和可扩展性,我们通常会使用一种框架模型,本门课程主要带大家认识学习Android的MVC-MVP-MVVM三种框架模型。在课程中除了会对比介绍每个模型的优缺点,还会结合代码案例来解析每个模型的使用。
MVC框架模型
MVC全名Model View Controller,即模型(model)-视图(view)-控制器(controller)
MVC模型简介
Controller:Activity、Fragment
View:layout、View 控件
Model:数据处理(网络请求,SQL等)
1.负责View层面的功能
2.model提供数据
3.view和model不直接通信,由present来联系
MVC代码演练
MVC优缺点
1.将数据的获取与界面的展示分离
2.解决个层之间的通信问题
MVP框架模型
MVP模型简介
MVP与MVC的差别
1.Model与View不再直接进行通信,而是通过中间层Presenter来实现
2.Activity的功能被简化,不再充当控制器,主要负责View层面的工作
MVP代码演练
MVP优缺点
优点:
解决了MVC中Controller与View过度耦合的缺点,职责划分明显,更加易于维护
缺点:
接口数量多,项目复杂度升高。随着项目复杂度的提升,Presenter层会越来越臃肿
MVP使用建议:
1.接口规范化(封装父类接口以减少接口的使用量)
2.使用第三方插件自动生成MVP代码
3.对于一些简单的界面,可以选择不使用框架
3.根据项目复杂程度,部分模块可以选择不使用接口
MVVM框架模型
MVVM模型简介
MVVM是Model-View-ViewModel的简写,MVVM在MVP的基础上实现了数据视图的绑定(DataBinding),当数据变化时,视图会自动更新;反之,当视图发生变化时,数据也会自动更新。
1.减少了接口数量
2.告别繁琐findViewById操作
DataBinding学习
是谷歌官方发布的一个实现数据绑定的框架,(实现数据与视图的双向绑定),DataBinding可以帮助我们在android中更好的实现MVVM模式
1.启用DataBinding
2.修改布局文件为DataBinding布局
3.数据绑定(单向绑定@Bindable,双向绑定@=)
MVVM代码演练
提供View,ViewModel一级Model三层
将布局修改为DataBinding布局
View与ViewModel自建通过DataBinding进行通信
获取数据并展示在界面上
LIveData+ViewModel
1.LiveData是一个可以被观察的数据持有者,它可以通过添加观察者的方式来让其他组件观察它的变更
2.LiveData遵从应用程序的生命周期(如果LiveData的观察者已经是销毁状态,LiveData就不会通知观察者。)
MVVM优缺点
优点:
实现了数据和视图的双向绑定,极大的简化了代码
缺点:
Bug难以调试,并且dataBinding目前还存在一些编译问题。
课程总结
MVC:学习简单但是解耦不够彻底
MVP:解耦更加彻底,学习起来也相对比较简单,但是代码相对比较繁琐
MVVM:代码逻辑非常简洁,但是学习成本较大