写一个最简单的demo理解MVP的本质

mvp是一个老生常谈的话题了,网上太多讲MVP的文章了。但有的文章不是结合了rxjva,retrofit等开源项目,就是讲的太过复杂。所以我会写一个最简单的mvp demo。来帮助大家理解mvp的本质。

大多数时候,问题都可以拆解为,WHTA,WHY,HOW;什么是MVP,为什么使用MVP,如何使用MVP。

WHAT:先说什么是MVP,

上面这张图是网上找的,其实这张图已经很明显了,MVP和MVC的区别,在于以前的View层不仅要和model层交互,还要和controller层交互。而在mvp中,view层只和presenter层交互,而model层也和presenter交互,presenter构成了view层和model层的桥梁,也解耦了view层和model层。这一点很关键。我认为,这也是mvp的本质:

解耦view层和model层,让view层和model层通过presenter层进行通信。换个说法就是让诸如网络请求,数据库读写的逻辑,从activity中剥离出来。activit只负责页面的展示,不关心model层的逻辑。

WHY:之后来谈谈为什么要使用mvp

如果大家阅读过github上的一些开源的android项目,例如telegram,一款即时通讯软件,;或者TweetLanes,一个第三方的功能完整的Twitter客户端。这些开源项目都存在一个问题,就是一个activity文件中一两千行,甚至三四千行代码。当然,我想这个在android项目中并不是一个奇怪的现象,当你的项目足够复杂,没有什么是不可能。在基于传统android架构的mvc模式中。model层很多时候只是一个bean类。而view层只是一个xml文件,controller层也就是activity层几乎承担了诸如网络请求,数据库,更新UI等所有的工作,全在activity里完成。这也就导致了activity文件十分庞大臃肿。但是,问题接踵而至。多人维护这样的一个项目是很痛苦的,一个几千行的activity,假如某个人改动了其中的一行,可能会导致其他修改他的人非常痛苦,因为牵扯太多的逻辑了。所以,人们开始尝试把几千行的代码,分成很多模块。网络请求放在一个模块,UI更新放在一个模块,其他的东西放另一个模块。之后就有了MVP。

HOW:在android中如何使用MVP模式

这里我新建了一个项目,项目里有3个class和一个interface,这就是最简单的mvp模式了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值