安卓MVP架构分析

在我们讨论MVP架构之前,我们要先了解理解一下MVC架构。

MVC架构以及MVC结构在安卓中的弊端

MVC架构指Model-View-Controller.是一种将业务逻辑、视图和数据分离开来的架构方式。View是指界面展示,Model是指持久层模型,View指界面的展示,Controller用于逻辑控制。


MVC示意图

如果在安卓中使用MVC架构,那么XML文件用于承担View的职责,而持久层对象承担Model的职责,Activity承担Controller的职责。由于在安卓中,Activity随着屏幕的翻转而不断地执行自己的生命周期中的方法,这使得Controller的职责过重。同时MVC架构中,View与Model存在很强的耦合。所以MVP模式被发明出来,解决问题。

MVP架构

MVP架构指Model-View-Presenter。与MVC架构唯一不同的是,MVP架构采用了Presenter的机制。

Presenter可以理解为一个交互中间人,它从Model层得到了数据之后,传送给View,这样Model与View之间的耦合就被解除了。这样Presenter是纯逻辑性质的,甚至负责原来View承担的一部分逻辑控制工作,减轻了原来View的职责。

View通常由activity、fragment以及view控件负责,他们也会持有Presenter的引用,当view上有操作发生时,他们会调用Presenter的相应方法进行处理。

所以Presenter与View是相互持有引用。

MVP进行了View与Model之间的解耦,使得安卓软件的可测试性提升,同时MVP大大降低了activity类的复杂度。

MVP项目实战分析

我选择谷歌官方提供的MVP项目,一个todoapp来进行分析。


项目结构

这个项目采用了MVP架构,它按照功能点来划分模块。

此项目有一个presenter基类BasePresenter,以及一个view基类BaseView,

在BaseView中,有setPresenter方法。因此继承了BaseView的类他们都依赖于一个Presenter接口。在activity生命周期过程中调用的方法中,只会重新给view注入他们依赖的presenter接口,而不是重复执行大量的逻辑代码。

在每个模块中,都写了一个contract接口,里面声明了View和Presenter接口,声明了相应的功能。

以addedittask模块为例。




Contract



项目地址:https://github.com/googlesamples/android-architecture/tree/todo-mvp/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容