MVP(Model View Presenter)模式是由MVC模式发展而来的,在现在的Android程序开发中显得愈来愈重要。本篇文章简单讨论了MVP模式的思想。 html
啥是MVP android
MVP模式的主要思想是将程序的业务逻辑从表现层分离出来,理想状况下,MVP模式可使得相同的逻辑拥有彻底不一样且可互换的views。 git
为啥要用MVP github
在Android实际开发过程当中,咱们会遇到这样的问题:Android中的activity与界面展现和数据访问机制耦合度很是高,既负责页面组件的展现,又负责处理业务逻辑。一个极端的例子就是混合适配器CursorAapter,它既是view的一部分,却又带有cursor,应该放在数据访问层。 数据库
为了应用程序具备好的扩展性和可维护性,咱们须要有好的架构分层设计。假如之后咱们再也不从数据库中取数据,而是从网络中获取数据,那么咱们只好从新作一个view出来。 网络
MVP分层架构可使views与数据源相互分离,将业务逻辑从activity中分离出来,它将应用程序至少分为三个不一样的层次,从而能够分开独立地调试程序。 架构
怎么用MVP spa
MVP的架构并非很死板的,不一样的开发人员能够根据本身工程的须要,将MVP的思想运用在本身的项目中。 设计
The presenter 调试
Presenter做为View层和Model层的中间层,它负责根据业务逻辑从model层中检索数据并将其格式化,返回给View层。可是,它不像传统的MVC那样,它还负责响应你与View的交互。
view层经常由activity来实现(也可使Fragment,View等),它每每持有一个presenter的引用。一般状况下,经过引用注入的方式DI,能够完美地将presenter提供给view层调用。(例子Dagger)View层所要作的就是,经过该引用来调用presenter中的方法来完成对用户在界面操做的相应。
model层是用来完成数据的提供服务。在一个分层架构良好的应用程序中,model层仅仅是做为业务逻辑层访问数据的一个入口。文章:Uncle Bob clean architecture
总结
在Android中将业务逻辑与界面分离并非一件很容易的事儿,经过MVP的架构思想,咱们试图减小activity中的代码量,这样作会使得咱们的程序扩展性和可维护性更好。GitHub上关于MVP有一个很好的例子an MVP example on Github