温馨提示:
微信公众号做了超链接限制,有兴趣的小伙伴可以直接到
www.androidblog.cn
或点击文章末尾"阅读全文"里进行查看
注意 【招编辑和分享讲师,有意者公众号留言】
作者简介:
本文作者 North_2016
本文原地址:http://www.jianshu.com/p/b49958e1889d
文章源自网络,如果涉及侵权等问题,请第一时间联系我们予以下架
话不多说,先上图:
T-MVP架构图
下面,看看如何利用泛型把我们从繁杂重复的劳动中解救出来。
后台接口用的是LeanCloud的REST API,数据通过Node爬虫从网页上获取,先爬出十个页面的列表,然后每一个列表爬进去获取文章详情。爬虫代码见app.js。(建议替换成自己申请的appId和appKey)。
1、页面分层结构
宗旨:纯粹界面操作交互,不需要MP参与的行为,尽量V自己做,保证MVP职责清晰,P只有干净简洁的协助VM的业务逻辑操作,M只处理数据操作。
登录契约类
相比谷歌官方Contract类,多了一个Model,用于将P中繁杂的数据操作分离解耦,让P层变得简洁明了,只处理M和V相关操作即可,登录Present的全部代码:
登录Present的全部代码
RxManage用于管理订阅者、观察者、以及事件。(详见代码)
例如:
发送事件: mRxManage.post(C.EVENT_LOGIN, user);
接收事件:mRxManage.on(C.EVENT_LOGIN, arg ->mView.initUserInfo((_User) arg));
LoginModel的全部代码:
LoginModel的全部代码
抽离出Model不仅各层更加分工明确便于Model的复用,而且大大简化了Presenter的代码量,让P层更简洁更专注。职能清爽,一目了然。
2、列表页
例如一个列表页,用户关心的,只有列表的Item展示:
mTRecyclerView.setItemView(ItemView.class);
不需要在当前页面写网络请求,不需要写下拉刷新和分页加载更多的回调,不需要写任何Adapter,只需要这一句即可。因为用泛型在TRecyclerView里面写过抽象层的操作,将监听和数据的获取封装成通用模板,从此可以一劳永逸了。
比如,分页加载的封装操作:
TRecyclerView部分代码
对于有HeaderView的List也一样:
mTRecyclerView.setHeaderView(HeaderView.class).setItemView(ItemView.class);
ViewHolder也是相当简洁的写法:
ViewHolder
至此,项目可以永远告别OnRefresh ,onLoadMore ,Adapter。
3、项目结构
利用泛型封装的一些Base类,总代码不超过1000行,也是T-MVP的核心:
T-MVP项目结构])X{FRT]K9SMSZ}CY.jpg
T-MVP利用泛型解藕和高度抽象封装之后,相较于传统MVC和MVP代码量大大精简,架构的代码量也是精简至极:
例如BasePresenter的全部代码:
BasePresenter的全部代码
二、T-MVP的目标
//TODO
正在做:
1 添加持久层数据存储realm
2 recyclerview支持多种LayoutManager (GridLayoutManager StaggeredGridLayoutManager),支持多头部,多列表类型,多底部。
3 添加fragment的MVP,同时也解决了一个页面需要多个P的问题
4 尽量把反射去掉,免得有人抓住把柄说性能不好
5 把框架部分隔离出来,单独做成Library
6 用apt自动帮我们生成一些黑科技代码,达到事半功倍的效果
三、进度
1登录、注册
2列表分类
3文章详情 文章评论列表
4用户中心 用户评论列表
5更换头像
6用户列表
项目截图:
------------------------------ End --------------------------------
精选文章:
View事件体系 面试遇到的那些坑 Android密钥保护和C/S网络传输安全理论指南
随机洗牌算法 Android增量编译 由模块化到组件化(一) 一致性Hash算法
Android应用耗电量分析与优化建议 我不是不同意你的看法,而是受不了你说话的样子
仿京东手势解锁 开发人员一份技术简历写好很重要
往期周刊:
50期 | 49期 | 48期 | 47期 |
46期 | 45期 | 44期 | 43期 | 42期 | 41期 | 40期 | 39期
38期 | 37期 | 36期 | 35期 | 34期 | 33期 | 32期 | 31期
30期 | 29期 | 28期 | 27期 | 26期 | 25期 | 24期 | 23期
22期 | 21期 | 20期 | 19期 | 18期 | 17期 | 16期 | 15期
14期 | 13期 | 12期 | 11期 | 10期 | 09期 | 08期 | 07期
06期 | 05期 | 04期 | 03期 | 02期 | 01期 |
-----------------------------------------------------------------------------------------
自动回复:
公众号已做了自动聊天回复功能,大家可以用以下关键词进行挑逗。
网站,QQ群,代言人,福利,1-47(最新期数)之间任意数字,最新文章 等!
温馨提示:
微信公众号做了超链接限制,有兴趣的小伙伴可以直接到www.androidblog.cn
或点击文章末尾"阅读全文"里进行查看