以前写项目的时候也很少考虑到结构模式的问题,基本都是用到MVC的模式,但随着项目的功能增加,版本的升级迭代。代码变得越来越臃肿,尤其是activity里面,动辄上千行代码,这对于后期的项目维护来说绝对是一个灾难,因此决定重构代码,这时候注意到MVP开发模式,代码简洁,把和控制View显示无关的代码全都放在其他类里面,尤其像访问网络,操作数据库这些耗时的操作。因此在网上找了写资料熟悉了下如何使用,下面是我对MVP模式的一些理解:
什么是MVP?
MVP是模型(Model)、视图(View)、主持人(Presenter)的缩写,分别代表项目中3个不同的模块。
模型(Model):负责处理数据的加载或者存储,比如从网络或本地数据库获取数据等;
视图(View):负责界面数据的展示,与用户进行交互;
主持人(Presenter):相当于协调者,是模型与视图之间的桥梁,将模型与视图分离开来。
如下图所示,View与Model并不直接交互,而是使用Presenter作为View与Model之间的桥梁。其中Presenter中同时持有Viwe层以及Model层的Interface的引用,而View层持有Presenter层Interface的引用。当View层某个界面需要展示某些数据的时候,首先会调用Presenter层的某个接口,然后Presenter层会调用Model层请求数据,当Model层数据加载成功之后会调用Presenter层的回调方法通知Presenter层数据加载完毕,最后Presenter层再调用View层的接口将加载后的数据展示给用户。这就是MVP模式的整个核心过程。
这样分层的好处就是大大减少了Model与View层之间的耦合度。一方面可以使得View层和Model层单独开发与测试,互不依赖。另一方面Model层可以封装复用,可以极大的减少代码量。