Android 框架系列(一)—— 框架概要篇

android开发避免不了的就是框架的搭建,我们熟知的MVC、MVP、MVVM,都是我们熟知的框架结构,开发中使用哪种结构,结构如何搭建,这种结构使用过程中存在的优缺点,这些都是我们需要考虑的。下面就讲解一下这些框架的知识。

1、MVC

1.1 MVC结构图

在这里插入图片描述

1.2 MVC各部分的功能

View:布局展示部分,这部分是和用户直接交互的,展示各种控件效果,包括动画、布局中展示的数据等部分。Android中布局都是定义在xml文件中的,但是如果需要对数据进行展示就需要在Activity中对布局中的控件进行操作,导致Activity充当了部分View的角色。
Controller:控制部分,也是中转站,既要和View关联,也要和Model关联,Controller从Model中获取数据,然后经过处理,展示在View布局中;也是从View布局中获得请求,要展示什么样的数据,然后发送给Model层去请求数据。在Android中主要是Activity充当这个角色。
Model:数据请求部分,主要是用来请求各种数据,包括网络请求、获取本地的数据、数据的各种操作,获取到数据之后,通过Activity的应用,将数据返回给Activity中。

1.3 MVC优点和缺点

优点:简单明了,Android开发架构其实已经搭建好了一个MVC的框架,无需进行任何后续的框架搭建。我们只需要将不同页面分开即可。
缺点:因为Activity既要充当Controller局色,又要包含部分View功能,所以导致Activity内部代码很臃肿,稍微复杂一点的页面都是动辄上万行的代码,对于后续功能开发和页面的维护很不方便。基于此才有了后来的MVP框架。

1.4 MVC的应用场景

MVC开发很快,适合小项目以及快速上线的项目开发,符合那种当前主要任务是功能开发的app架构,因为项目很紧,所以先上线再说。而且任何的框架都是因为项目需要才会去优化,脱离项目的架构都是没有任何意义的。

2、MVP

2.1 MVP结构图

在这里插入图片描述

2.2 MVP各部分的功能

View:这部分就是和用户交互部分,包括的就是xml布局文件和Activity文件了,内部会新建Presenter对象,通过Presenter发送数据请求和返回数据展示
Presenter:业务逻辑部分,获取View的请求,经过必要的处理,将请求发送给Model,Model获取到数据之后,返回给Presenter,Presenter对数据经过处理,让View部分可以直接展示。
Model:数据请求部分,和MVC中的Model是完全一样的。

2.3 MVP优点和缺点

优点:解放了Activity,让Activity只做View部分的功能,实现了改造MVC的目的;各部分功能分别独立,更加易于开发。
缺点:因为Presenter内部持有了View的引用,并且网络请求又是跨线程的,这样很容易导致内存泄露,两者之间的关联性还是很强。当然也有一些方法可以避免的,比如Presenter内部持有的View对象使用弱引用,这样也可以让View对象可以被回收。

2.4 MVP的应用场景

项目需要长期维护,那么就需要对app进行架构维护,这时候就可以使用MVP,将各功能模块独立开发。项目周期很长,也可以使用MVP开发,可以不同开发人员维护不同的模块,也就是A做View,B做Model,C做Presenter。

3、MVVM

3.1 MVVM结构图

在这里插入图片描述

3.2 MVVM各部分的功能

View:这部分就是和用户交互部分,包括的就是xml布局文件和Activity文件了,内部会新建ViewModel对象,ViewModel会通过Data Binding工具,绑定布局文件
ViewModel:通过Data Binding绑定布局文件,通过Model获取数据,然后将返回的数据处理,通过Data Binding直接刷新布局,无需再持有View的引用。
Model:数据请求部分,和MVC中的Model是完全一样的。

3.3 MVVM优点和缺点

优点:View持有ViewModel的对象,ViewModel不持有View 的对象,减少了两者之间的耦合,有效避免了MVP中产生的内存泄露问题;通过Data Binding绑定布局文件,无需再通过findvviewbyid方法找到对应的控件,数据变更会直接刷新布局,无需View进行任何操作。
缺点:严重依赖Data Binding,会产生大量的相关文件,会增加包大小;并且出现问题时候,定位增加困难;对老项目进行架构优化时候,这种很不适用,改动太多。

3.4 MVVM的应用场景

新项目适合用这个框架,因为这也是google公司推荐的框架,以后肯定会给予更多的支持,也是必须要学习的新技术。

总结:之前了解过iOS开发直接从MVC到MVVM,因为iOS系统开始就提供的类似Data Binding的工具,所以直接使用即可,无需进行过度。其实MVP只是将原来Activity中的业务逻辑操作部分抽离出来,单独放置在一个类中。MVVM是很大的改进,不仅是View和ViewModel的单向引用,也是因为工具减少了很多之前查找控件和数据刷新的操作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值