A、首先我的工程目录
微信图片_20181017171115.png(1)简单介绍MVP开发模式
在传统的Android 应用开发中,View层(Activity,Fragment或者自定义View)承载太多的责任,它不仅仅要完成界面的更新,复杂动画的渲染等UI相关的操作,还要处理各种业务逻辑,网络请求获取数据,将用户输入保存到本地数据库中。由于职责不单一,View层的代码显得很庞大,一个Activity或者一个Fragment的代码可能要上千行,随着一个类的代码量逐渐增加,维护和升级将变得越来越困难,牵一发而动全身,为了更好地组织并对代码进行分层大户人家,则必要引入MVP模式。
(2)MVP是什么
MVP的全称是Model、View、Presenter.它将整个应用分为三层:
微信图片_20181017171503.png(3)MVP的开源实现(通过对比来进行使用)
a、Android-Architecture(Android 体系架构)
https://github.com/googlesamples/android-architecture
Google官方出品你的Android UI框架的一些例子,几乎都是MVP架构的实现,我们可以根据自己的业务需求进行选择和参考。
Google通过一个TODO类来讲解如何使用一些第三方库:
b、TODO-MVP(MVP架构基本实现)
https://github.com/googlesamples/android-architecture/tree/todo-mvp/todoapp
MVP架构的基本实现,没有使用任何其他的架构框架,通过纯手工依赖注入实现从本地数据源和远程数据源获取数据的Repository,使用回调方法实现异步任务.
c、TODO-MVP-Loaders(Loader机制)
https://github.com/googlesamples/android-architecture/tree/deprecated-todo-mvp-loaders
在TODO-MVP的基础上,通过Loaders机制从Repository中获取数据,使用Loaders机制好处:
提供异步加载数据的能力,因此Repository不需要回调方法
监听Repository的数据变化,并在数据变化是发送新的结果
在配置变化导致界面重建时,Loaders机制会重新与最后的Loader建立联系
d、TODO-MVP-Clean(在TODO-MVP基础上,参考Clean架构思想)
https://github.com/googlesamples/android-architecture/tree/todo-mvp-clean
在TODO-MVP的基础上,参考Clean架构的思想,在表现层和Repository之间增加了一个Domain层,在整体上将App分为三个层次。
MVP层:也成为表现层,包含View和Presenter.
Domain层:业务逻辑层,提供名为use cases或者interactors的类来表示所有可能从Presenter发起的动作
Repository层:数据存储层
e、TODO-Databinding
https://github.com/googlesamples/android-architecture/tree/deprecated-todo-databinding
在TODO-MVP的基础上,结合Data Binding 函数库实现师徒和数据的绑定,它并没有严格遵循MVP或者MVVM模式,因为结合使用了ViewModers和Presenter.
Data Binding 函数库的引入,减少了很多样板代码的使用,实现UI元素和数据的绑定
使用布局文件实现数据和UI元素的绑定。
事件也会和一个动作处理器绑定在一起
监听数据并在需要时自动更新。
f、其它开源参考实现
androidmvp
https://github.com/antoniolg/androidmvp
mosby
https://github.com/sockeqwe/mosby
nucleus(我只用过这个)
https://github.com/konmik/nucleus
EffectiveAndroidUI
https://github.com/pedrovgs/EffectiveAndroidUI
MvpCleanArchitecture(貌似没有更新了)
https://github.com/glomadrian/MvpCleanArchitecture
(4)MVP的好处
使用MVP组织代码架构,并对代码实施分层管理,好处
微信图片_20181017172751.png
(5)MVP存在的问题
微信图片_20181017172844.png当然瑕不掩瑜,就选MVP了,当然选的是最基础的,是对MVP的基本实现
网友评论