MVP+Retrofit+Rxjava+Dagger2 Architecture

地址

https://github.com/meybeBlank/FengArchitecture

前言

Android做了两三年,每次都是用的别人的架构,中途也抽时间看过项目的框架的东西,一知半解,虎头蛇尾。自己没有从0到1的过程,能力没法引起质变,始终还是半吊子,年初打定主意把热门的Retrofit之类全都系统的亲手敲一遍。由经历了找工作遇到坑,再找工作安定下来的一言难尽,最后弄完已经到了年尾。这里做一个简单自我总结,以及自己的一些设想。

结构


目录

base: app基础的类、接口

common: 基础的第三方控件、自定义控件

di:Dagger2基础依赖 以及 业务Module

http: 网络依赖 retrofit rxjava

utils:工具类

bussiness:具体业务。

 

contract:MVP契约类 VP接口信息

model:数据仓库和JavaBeans

modules:service broadcast等组件

ui:略

 

Key:

Business1Module:某个Business具体业务P、V层组件提供。创建具体的Presenter与View都需要在这里进行注册。
B1Repository:某个Business具体数据仓库,对Service数据进行了基本处理。
ServiceModule:某个Business具体的网络Service,提供最原始的Retrofit Service。
BaseActivity:实现HasFragmentInjector接口解决DaggerActivity的侵入性问题。
PresentUtil:反射的方式 通过注解{@link APresenter}绑定Presenter与View。

 

使用

创建Contract,实现具体的Presenter与View,在BusinessModule注册。

创建Service,在ServiceModule注册。创建Repository,并别忘了@Inject。

其他也没啥需要说的了,可以看项目里面的两个简单页面。

 

最后

当然,还有一些问题待解决。

没有模块化,第一次完整的筹备一个比较成熟的架构,因为平时遇到的项目不够大,实际用不到模块化的东西,也就没有考虑。

P层粒度不好把控,MVP的一点儿小瑕疵,这里粒度分得比较细。

PresentUtils使用反射的方式进行绑定PV,不知道是否可以用APT代码生成的方式降低性能损耗。

Presenter的Scope,为了Component提供Contract.Presenter接口,让View不依赖具体实现而依赖接口,但是AppComponent有不能同时支持@Single 和 @Activity,所以这里Scope有一点儿小瑕疵。

之后具体使用再进一步进行优化吧。

同时也要感谢:
开源接口提供:https://www.jianshu.com/p/e6f072839282
大牛朋友:Rhett Lee
以及提供blog、源码学习的童鞋些。

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章