位置: 编程技术 - 正文

框架模式MVP在Android中的使用(mvp 框架)

编辑:rootadmin

推荐整理分享框架模式MVP在Android中的使用(mvp 框架),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:什么叫框架模式,框架中用到的模式,框架模式怎么用,mvp 框架,框架模式什么意思,mvp框架是什么意思,框架模式什么意思,mvp 框架,内容如对您有帮助,希望把文章链接给更多的朋友!

前一篇文章中学习了MVC框架模式在Android中的使用,不了解什么是MVC框架模式的亲戳这里 框架模式 MVC 在Android中的使用。其实谷歌Android开发团队是鼓励开发者利用MVC框架模式开发项目的,我们平时写代码也或多或少的在使用MVC框架模式开发项目,比如说谷歌自己退出来的Volley网络请求框架就是遵循MVC框架的。我们可以理解为Volley框架是MVC当中的模型,也就是网络数据处理这一块,无需跟View视图有任何关联。也符合视图和模型分离。可能你会觉得MVC框架已经很好用了,也能满足任何项目开发,不错,可是从上一篇博客你会发现,Controller控制器和View视图显示是在一个类Activity中体现出来的,而Android中Activity是担当Controller控制器的角色的,如果界面操作方式繁琐,视图显示复杂,那么我们不得不在Activity中添加更多的View视图显示操作,这样自然增加了Activity的代码量,也导致了Activity承担的任务和逻辑处理太多,职责不清晰。这一篇我们来介绍另外一种框架模式MVP。

MVP

MPV 是从经典的MVC模式演变过来的,其基本思路都是相通的。其中M是model模型,提供业务数据;P和MVC中的C担当的角色相似,是Presenter控制者,进行逻辑处理。V是View视图,显示数据。MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller。

MVC框架图 MVP框架图

从上面的框架图可以看出MVC和MVP最大的区别就是 Model和View之间的关系。在MVC框架中,View是可以直接读取Model模型中的数据的,Model模型数据发生改变是会通知View数据显示发生相应的改变。而在MVP中Model和View之间的没有任何联系,是两个完全独立的模块,当Model模型发生数据改变时,通过Presenter通知View视图发生相应的UI改变。因此,个人觉得:MVP才是正真的视图和模型完全分离,也就是Model模型进行业务数据处理和View视图显示没有任何关联。

MVP for Android

在Andorid项目中,我们习惯将Activity作为MVC中的控制者来达到Model模型和View视图分离,但是在MVP框架模式中,通常将Activity作为View视图层,因为在MVC框架模式中Activity和View视图显示关联紧密,Activity中包含大量的View视图显示代码,如果哪天老板说需要修改View视图显示,这时候你是不是感觉需要修改Activity中的大量代码?这么一来会将Activity中控制逻辑破坏,也导致Activity中承担太多的职责。根据单一职责原则,Activity主要起到用户交互作用,也就是接收用户输入,显示请求结果。因此可以通过MVP框架模式来减轻Activity的职责。看看Android项目中怎么实现吧!

同样拿上一篇的天气预报小项目来举例子:

Model模型框架模式MVP在Android中的使用(mvp 框架)

和MVC框架模式一样,Model模型处理数据代码不变

通过OnWeatherListener接口回调将Model模型处理的数据返回给Presenter控制者。

Presenter控制器

从代码中我们可以看到Presenter控制器同时持有 WeatherModel和WeatherView对象且实现了OnWeatherListener接口取回Model模型数据,因此,WeatherPresenterImpl向WeatherModel发送数据请求,然后通过OnWeatherListener接口实现获取请求结果,在将结果通过接口WeatherView把数据显示到Activity担当的View视图中。从而达到彻底将Model和View完全分离,试想在这种情况下,如果你需要修改Model是完全不会影响View视图代码的修改的,同理,修改View视图层的时候,也完全无需修改Model层。相当于Model和View互相不知道对方的存在,都是通过中间控制器Presenter来传达通信。

View视图

先定义一个View视图显示的接口WeatherView

然后实现Activity实现WeatherView接口

因此,Activity及从MVC中的Controller中解放出来了,这会Activity主要做显示View的作用和用户交互。每个Activity可以根据自己显示View的不同实现View视图接口WeatherView。

总结MVP框架模式完全将Model模型和View视图分离,从而使得代码的耦合性第,利用MVP框架写项目达到解耦作用。MVP和MVC最大的区别是:MVC中的V可以从M中获取数据,而MVP中M和V完全分离,互相不知道对方的存在,Presenter通过接口通信方式将V和M通信。在Android中MVP框架 Activity担当View视图层和MVC框架模式不一样Activity担当控制器。

源码地址下载:源码地址

Android JUnit Test androiddebug,junittest,log,这几个在开发中经常要用到的,需要掌握一下。关于AndroidJUnitTest在eclipse下的配置AndroidManifest.xml中写两个1application里面加上!--androi

Android开发中工具类的介绍 Android开发中常用的工具类详细解释主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java。目前包括HttpUtils、DownloadManagerPro、ShellUtils、Package

Android虚拟机学习总结Dalvik虚拟机进程和线程的创建过程分析 Dalvik虚拟机在调用一个成员函数的时候,如果发现该成员函数是一个JNI方法,那么就会直接跳到它的地址去执行。也就是说,JNI方法是直接在本地操作

标签: mvp 框架

本文链接地址:https://www.jiuchutong.com/biancheng/383222.html 转载请保留说明!

上一篇:android shape(Android shape 梯形)

下一篇:Android开发中工具类的介绍(android开发工程师岗位说明)

  • 以前年度多计收入多交税怎么处理
  • 收到发票冲红怎么做分录
  • 企业所得税年报怎么查询
  • 增值税主表填报说明
  • 固定资产折旧购买日期还是使用日期呢
  • 已开发票查询不到怎么回事
  • 实控人变更是利好吗
  • 个人境外存款利息收入收税
  • 提现需要填制什么表格
  • 债务清偿抵充的案例
  • 公司注销时发现很多年前多发了员工的工资
  • 其他综合收益为什么要结转
  • 出租设备应计入什么科目
  • 已抵扣红字发票信息表怎么开
  • 企业筹办期间,发生亏损,应该计算为亏损年度
  • 增值税发票含税不含税怎样调整
  • 全年一次性奖金计税方式
  • 本月预估是什么意思
  • 房地产开发企业预收款预缴增值税
  • 发票超过标准可以报销吗
  • 没有单价数量只有金额的发票可以用吗
  • 增值税小规模纳税人免征增值税政策
  • 原材料进口关税计入成本吗
  • 以房抵债房屋能否判决过户
  • 质权的成立时间为
  • 计提本月银行借款利息是收付实现制还是权责发生制
  • 库存现金日记账的登记依据
  • 个人销售自建自用住房解读
  • php读取xml文件
  • 报税货物范围包括
  • 旅行费发票
  • dex源码提取
  • 退税是上一年交的税都会退吗
  • 累计折旧当月增加当月减少
  • 交易性金融资产公允价值变动计入
  • 帝国cms使用手册
  • 帝国cms视频教程
  • 出口退税率为0要补增值税吗
  • 作废的增值税普通发票怎么处理
  • 所得税季报季末从业人数
  • 子公司没有收入,只有费用如何企业所得税汇算清缴
  • 企业第四季度是什么时候
  • 本年利润每个月需要结转吗
  • 所有者权益的来源包括
  • 公司支付给实习生的报酬如何税前扣除?
  • 税控系统技术维护费的申报抵扣方法
  • 库存现金的主要内容有哪些
  • c# mysql实例
  • mysql按字节截取
  • 修改mysql用户权限
  • mysqldump导出csv文件
  • 电脑windows不可用怎么办
  • win7怎么设置麦克风权限
  • 用心一也的一是什么词类活用
  • mac 电脑出现问题而重新启动
  • mac怎么把视频设置成桌面
  • 清华同方bios通用密码(thtfpc)
  • cmos设置密码开机密码
  • 电脑主板bios是什么意思
  • 装双win7系统怎么设置
  • windows一键安装
  • win10无internet怎么办
  • 神墓凌云
  • win7通过组策略阻止应用程序安装
  • skynetave.exe - skynetave是什么进程 有什么用
  • win8.1删除所有内容并重新安装
  • shell while
  • perl 字符串处理
  • 对qucik cocos2dx lua SocketTCP的再一次封装,导入全局实例,包含自定义事件
  • 微信小程序基于spingboot
  • javascript组成
  • 天津市国税局网站
  • 吉林网上报税网址
  • 四川灵活就业医保每月返多少钱
  • 增值税申报表如何更正
  • 甲供材备案需要的资料
  • 车辆购置税查询怎么查
  • 出口退税网上申报流程
  • 酒店业需要缴纳哪些税
  • 税务窗口岗位职责
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设