Android 四大应用架构总结

提示:学疏才浅,如有错误请各位不吝指教


前言

安卓的架构随着发展不断变更,学习新的框架才能走得更远。


一、MVC

mvc指model、view、controller。model层负责数据管理,典型的例子有网络传输以及各种实体类,而view层和controller层通常是紧密结合的,用户在view层的操作触发controller层的业务逻辑被调用,controller层再将返回的信息显示到view层中,典型的例子有Activity或fragmnet与它所绑定的xml文件。

优点

mvc作为比较传统的代码架构比较成熟,另外架构的模块化程度较高,数据与界面分离降低了耦合性

缺点

在复杂项目当中controller层会变得即为笨重,因为它承载了view以及各种业务逻辑,而相较而言view层和model层都比较轻量级,因此controller层的代码会比较难维护并且可读性低。另外,model层与view层耦合度较高。

二、MVP

mvp指model、view、presenter。model层和view层的职责与mvc的一致,最大的不同在于mvp是以presenter层作为view与model之间的交互层,会从model层中获取需要的数据,然后在view层中显示。另外,mvp中通常有contract接口,主要是用于统一管理view和presenter层的各种方法,它是一个接口,包含view层的接口和presenter层的接口,定义各自所需要的各个接口。view层只管ui,并且view层持有presenter的引用,通过持有的presenter来进行业务逻辑的实现,但不关注业务逻辑的具体细节,model层只管数据(bean/网络);presenter层持有view层与model层的引用,从model层进行数据的更新或者获取,再调用view层的方法去更新ui;model层只对presenter暴露,与view层完全隔离。

优点

相比mvc而言,mvp架构通过presenter层将model层和view层进行了隔离实现了解耦,使得代码的耦合度更低,复用性得以提升。

缺点

mvp框架中增加了contract类,导致代码复杂度提升,另外view层与presenter层的交互较多,导致这两层之间的耦合性较高,维护也会比较麻烦

三、MVVM

指model、view、viewmodel。view层与view层与之前的作用相似。其中,view与viewmodel双向绑定,model层负责管理数据并向viewmodel层传输数据。viewmodel通常需要继承viewmodel类,并且需要与view层的生命周期绑定。一般在viewmodel中会使用livedata/observablefield。

优点

view层与model层完全解耦,降低了耦合度,提高了代码的复用性。双向绑定技术使得设计人员可以专注于view层,而开发人员不需要去关注更新UI的操作,只需要专注于业务逻辑。并且mvvm的代码量更少、更轻量级。

缺点

每个view都绑定了viewmodel会导致内存花费多。

四、MVI

mvi分为界面层、数据层(界面与数据之间的网域层为可选层)。

view层

界面层包括界面元素(view)和界面状态(通常命名为XxState),虽然一般也会使用viewmodel(其中包含state类),但与mvvm架构最大的不同在于并非双向绑定,而是遵循单向数据流的设计模式。用户在界面上操作转给viewmodel,viewmodel中的state改变再传回到界面上显示

网域层

可以是一些复杂业务逻辑或重复使用的简单业务逻辑,通常命名为XxXxUseCase,它们可以被其他各种类使用。它们没有生命周期,而是受限于使用它们的类,如果是livedata则生命周期是隐式处理的,若是用数据流,最好是与协程一起使用,

数据层

由仓库和数据源组成,负责的任务需要包括数据的公开、处理、解决冲突、业务逻辑、以及对其余的数据源进行抽象化处理。通常存诸库类被命名为数据类型+来源类型(Remote/Local)+Repository。需为单一数据源(数据库、网络、文件……)。使用WorkManager来调度后台的操作是推荐的方案,一般调用enqueue、cancel方法。

需要使用到的技术栈:flow数据流、协程、……

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值