标签:
MVP 在 Android 上的使用其实已经流行了有挺长的一段时间,包括我们公司,经过我们Android端小伙伴们的思考与才华 我们的产品也是采取的MVP模式。
今天主要是想分享一下,本人对MVP的浅见,以及如何使用MVP模式搭建一个项目框架。
?? 说明:由于本人能力和时间有限,所以本文只是抛砖引玉,疏漏之处敬请谅解。
老规矩,先上图:
MVP,全称 Model-View-Presenter,是一种架构模式;
从MVC这位老前辈 演变而来;
至于MVC,MVP,MVVM的区别请查看:MVC,MVP 和 MVVM 的图示。
大体分为 Model、View、Presenter三层,下面介绍一下这几层的作用:
MVP的优点:
不足:
背景:
大体思路:
根据以上背景前提下,我们的项目拆分成两个包:commonlibrary
与 app(Presentation)
commonlibrary
:负责提供各种工具和管理第三方库,与业务逻辑完全无关,可跨项目使用;Presentation
:负责展示图形界面,并填充数据,处理业务逻辑;
Presentation 内要按功能划分模块:
一个项目是否好扩展,灵活性是否够高,包结构的划分方式占了很大比重。很多项目里面喜欢采用按照特性分包(就是Activity、Service等都分别放到一个包下),在模块较少、页面不多的时候这没有任何问题;但是对于模块较多,团队合作开发的项目中,这样做会很不方便。所以,我的建议是按照模块划分包结构。
layout
布局文件按 模块划分注意:需要修改 module下的 build.gradle
文件
这层不准备细分,如果细分的话可以参考这篇文章-“领域驱动设计系列文章——浅析VO、DTO、DO、PO的概念、区别和用处”
用于程序逻辑处理, 通过接口与View交互, 解耦业务和界面
这边会大量的View->Model,Model->View的手动同步逻辑,造成Presenter比较重,维护起来会比较困难,所以这边我们采用的是EventBus来进行解耦
请参考: 如何评估开源库是否值得引入!!!
MVP 模式的的开源库:
参考:
标签:
原文地址:http://blog.csdn.net/sinat_15877283/article/details/51260877