android中mvc,mvp,mvvm学习

最近正好有空,就看了一些关于android框架的文章,在这里做一个笔记,以方便学习。
项目中的代码实例我是看着Android开发架构选择MVP or MVVM文章敲的。
本文是一篇学习笔记,有一些个人理解,但是还是偏重笔记。如有冒犯之处,可留言,望见谅。
向大牛学习~

一,mvc

m,model,实体模型
v,view,布局文件
c,controller,控制器,一般指activity,fragment等。

优点:一个项目,如果不太注重后续的扩展和维护的时候,感觉代码写着写着就是这是这种模式了,我们在activity里面控制view界面上的控件,同时也在activity中请求网络接口,处理业务逻辑,请求网络接口一般会抽取到另外一个类中,activity里面只处理请求数据的回调。为了使功能模块区分开来,一般是一个功能模块一个包,里面含对对应的activity,adapter等。
缺点:当activity里面的业务逻辑越来越复杂的时候,activity中的代码会越来越多,造成代码臃肿,难以维护。

mvc

二,mvp

m,model,实体模型
v,view,布局文件和activity,fragment等界面展示型组件
p,presenter,业务逻辑处理层,用以连接model和view,处理业务逻辑。

优点:在mvp里面,业务逻辑的处理被抽取到了presenter层,view层只负责界面的展示,这样随着业务逻辑的增长,activity里面的代码依旧会很清爽。
缺点:presenter和view之间的交互是通过接口的,有时我们改变一个方法,可能子父类都要改变。项目会多出很多的类,可能使用mvc两个类就搞定了,但是用mvp可能需要五个类(接口,抽象类)。

mvp

说明:ILoginPresenter接口里面定义了子类要实现的功能,比如login

ILoginPresenter

LoginPresenter实现ILoginPresenter,在其中持有ILoginView,UserModel的引用。

这里写图片描述

ILoginView是界面展示操作的接口,里面定义了一些和界面改变相关的功能方法,比如显示一个进度框,关闭一个进度框,获取EditText的输入内容。LoginActivity实现ILoginView,实现其中的抽象方法。

ILoginView

LoginActivity是界面展示组件,它实现ILoginView中定义的界面功能,它持有LoginPresenter的引用。
当我们点击了LoginActivity上面的登录按钮时,调起LoginPresenter对象的login()方法,LoginPresenter对象持有ILoginView的引用,所以可能改变LoginActivity的界面。

LoginPresenter_login

在UserModel中,进行用户是否合法的校验(调起登录接口等)

以上即是mvp的基本结构,可以看到LoginActivity中有关界面控制的方法都是先在接口中定义好的,LoginActivity对其进行具体实现,有关业务逻辑的方法是在ILoginPresenter中定义好的,具体的实现在LoginPresenter,这样一来,LoginActivity中的代码就很清爽,随着业务逻辑的增长,代码会在LoginPresenter进行增长。

三,mvvm

m,model,实体模型
v,view,布局文件,activity,fragment等界面展示组件
vm,viewmodel,连接model和view,处理业务逻辑

我接触的项目中有一个用到mvvm框架,以上理解是我根据自己项目理解的,代码实现中mvvm一般都会使用databinding吧,一个activity和一个布局文件关联起来,在布局文件中使用layout节点,data界面把view和viewmodel关联起来,viewmodel里面处理一些业务逻辑,用的最多的其实是在viewmodel里面调起网络请求接口,处理接口回调,activity里面对这个接口回调进行处理。Databinding用的还不熟,如有错误还望指正。
LoginActivity的布局文件

activity_login

LoginActivity中调起Login方法

LoginActivity_doLogin

Databinding是谷歌官方提出的一个数据绑定框架,可以替代findViewById,可以关联布局文件和ViewModel。

参考文章:Android开发架构选择MVP or MVVM

Android App的设计架构:MVC,MVP,MVVM与架构经验谈

Android数据绑定框架DataBinding,堪称解决界面逻辑的黑科技

完全掌握Android Data Binding

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值