Retorfit+Rxjava+Rxandroid
的网络架构MVP网络框架(Retorfit+Rxjava+Rxandroid),使用的是Rxjava1.0
,其中的Model
层搭建过于简单,加剧了Presenter
的任务,同时也没有很好的解耦,没有使用Dagger2
依赖注入框架,Presenter
的生命周期没有和Acivity
绑定等等问题。故有此文章Model-view-presenter,简称MVP,是计算机软件设计工程中一种对针对MVC模式,再审议后所延伸提出的一种软件设计模式。java
Trygve Reenskaug
在1978年提出,是施乐帕罗奥多研究中心在20世纪80年代为程序语言Smalltalk
发明的一种软件架构。MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,而且使程序某一部分的重复利用成为可能。除此以外,此模式经过对复杂度的简化,使程序结构更加直观。软件系统经过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员能够经过自身的专长分组:
Model-view-presenter (MVP) 是用户界面设计模式的一种,被广范用于便捷自动化单元测试和在呈现逻辑中改良分离关注点(separation of concerns)。android
View(UI层):这是Activities
、Fragments
和其余标准Android components
组件所在的地方。它负责向用户显示从演示者接收的数据。它还处理用户交互和输入(点击事件等),并在须要时触发Presenter中的正确操做。git
Presenter:presenters订阅“DataManager”提供的RxJava可观察对象。他们负责处理订阅生命周期,分析/修改“DataManager”返回的数据,并调用视图中的适当方法来显示数据。程序员
Model (Data Layer):它负责检索、保存、缓存和消息数据。它能够与本地数据库和其余数据存储以及restful APIs
或第三方SDK
通讯。它分为两部分:helpers
和一个DataManager
。helpers
的数量因项目而异,每一个helper
都具备很是特定的功能,例如,与API
对话或在“SharedPreferences”中保存数据。DataManager
使用RxJava
操做符组合并转换来自不一样helper
的输出,所以它能够:1)向演示者提供有意义的数据;2)老是一块儿发生的组动做。该层还包含定义数据结构如何的实际模型类。github
从右到左看图表:算法
API
或数据库对话到实现一些特定的业务逻辑。每一个项目都有不一样的Helper
,但最多见的是:SQLite
数据库中插入、更新和检索数据。它的方法返回发出普通Java
对象的Rx Observables
可观测值。SharedPreferences
的数据,它能够直接返回Observables
或纯Java
对象。Retrofit
与Restful APIs
进行通讯的接口,每一个不一样的API
都有本身的Retrofit
服务。它们返回Rx Observables
。Helpers
类的引用,并使用它们来知足来自presenters
的请求。DataManager
提供的可观察对象,并处理数据,以便在视图中调用正确的方法。Presenter
中的适当方法进行操做。这些组件还实现与框架相关的任务,好比管理Android生命周期、填充视图等。未完待续。。。。。数据库
GitHub地址:Hement,持续更新中设计模式
最后说明几点缓存
Event Bus
可是这个事件总线有必定局限性,若是这个不存在生命周期的话,是不可以接受到的这个事件。例如:你不能发一个事件,让某个没有打开的View调动通知栏。