作家
登录

浅淡MVP的实战演习,让代码结构更简单~

作者: 来源: 2017-05-15 09:52:41 阅读 我要评论

媒介

讲事理,此次是真的笔者良久都没有更新blog了,重要比来保护的框架问题也是层出不穷,并且对技巧交换群的解答也让我身心疲惫,所以在这里跟存眷我的人说声抱歉,没有按期给你们带来福利,那么这里就给大年夜家带来一个重磅福利:爱吖妹纸——Retrofit & RxJava & MVP & Butterknife 的完全App.

编写 Presenter 实现类。

讲到比来让我身心疲惫的问题解答,无疑是让我在开源的路上越走越远,固然我不是技巧年沂录,却依然被一些很简单的问题轮番耗┞法,其实笔者的心坎真的是拒绝的。不得不说,写给技巧群内的你和群主,为什么你提问,而总没人回你!写的挺好。

概述

废话也不多说,对于MVP(Model View Presenter),我信赖大年夜多半人都能说出一些的,“MVC的演变版本”,“让Model和View完全解耦”等等,但用过MVP的人必定会认为,在Android中,代码很清楚,不过多了很多类。对于大年夜多半人而言,在看MVP的Demo的时刻,一眼就是慢慢的nice,然而让本身来写个例子,却很头疼写不出来。但切实其实MVC模式写起来加倍像是顺水推舟。只须要把本身的营业逻辑一股脑的放进Activity就成功完事儿。

干货模块,也就是一个Fragment,琅绫擎有一个RecyclerView,支撑下拉刷新和上拉加载数据。所以我们的 Presenter 和 View 只须要定义一下简单的办法。

不得不说,之前我们项目中切实其实也是用的MVC在编写的。很简单的会发明随便一个Activity代码都是几百上千行,甚至还有一万行以上的。看起来切实其实那么一回事儿,然则细想这个View对于构造文件,其实能做的工作特别少,实际上关于该构造文件中的数据绑定的操作,事宜处理的操作都在Activity中,造成了Activity既想View又像Controller,鄙弃代码上的不美不雅来说,对于后面的浏览代码真的是吃力。

不信?你瞧瞧。

也许营业逻辑比较简单的功能用MVC没什么,然则想没想过,如不雅你产品后面改需求怎么办?是的,你接收产品需求的强奸,但照样只有忍辱偷生。在日渐复杂的营业逻辑上,你的Activity和Fragment代码越来越多,最终导致代码爆炸,难以保护。

网上浏览一圈,发明讲MVP的文┞仿比比皆是,可见MVP的迎接度,但大年夜多半文┞仿都只是讲理论,稍微好点的会附带一个简单的登录的Demo。然而,一个简单的demo很难让初次接触MVP模式的人控制它的应用。所以爱吖妹纸应运而生。

什么是MVP

当然不克不及跑题,前面对 MVP 做了简单的概述,下面照样用一个简单的图表示一下。

如上图所示,在项目中 View 和 Model 并不直接交互,而是应用 Presenter 作为 View 和 Model 之间的桥梁。个中 Presenter 中同时持有 View 层以及 Model 层的 Interface 的引用,而 View 层持有 Presenter 层 Interface 的引用,当 View 层某个页面须要展示某些数据的时刻,起首会调用Presenter 层的某个接口,然后 Presenter 层会调用 Model 层请求数据,当 Model 层数据加载成功之后会调用 Presenter 层的回调办法通知 Presenter 层数据加载完毕,最后 Presenter 层再调用 View 层的接口将加载后的数据展示给用户。这就是 MVP 模式的核心过程。

如许分层的好处就是大年夜大年夜削减了Model与View层之间的耦合度。一方面可以使得View层和Model层零丁开辟与测试,互不依附。另一方面Model层可以封装复竽暌姑,可以极大年夜的削减代码量。当然,MVP还有其他的一些长处,这里不再赘述。

功能展示

这里就给大年夜家随便看看干货板块的功能吧。

构造相当简单。

  1. <android.support.v4.widget.SwipeRefreshLayout 
  2.     xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     xmlns:app="http://schemas.android.com/apk/res-auto" 
  4.     android:id="@+id/swipe_refresh_layout" 
  5.     android:layout_width="match_parent" 
  6.     android:layout_height="match_parent"
  7.  
  8.     <com.nanchen.aiyagirl.widget.RecyclerViewWithFooter.RecyclerViewWithFooter 
  9.         android:id="@+id/recyclerView" 
  10.         android:layout_width="match_parent" 
  11.         android:layout_height="match_parent"/> 
  12.  
  13. </android.support.v4.widget.SwipeRefreshLayout>  

 1/8    1 2 3 4 5 6 下一页 尾页

  推荐阅读

  pyspider爬虫教程 (2):AJAX和HTTP

在上一篇教程《pyspider 爬虫教程 (1):HTML 和 CSS 选择》中,我们应用 self.crawl API 抓取豆瓣片子的 HTML 内容,并应用 CSS 选择器解析了一些内容。不过,如今的网站经由过程应用 AJA>>>详细阅读


本文标题:浅淡MVP的实战演习,让代码结构更简单~

地址:http://www.17bianji.com/lsqh/35192.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)