MVP框架简述

前言:
无论是安卓应用开发,还是Web开发,还是.Net开发,更甚至C++、C,对项目架构的思想都是非常重要的,好的架构可以让项目模块分明,容易维护 。而在多人开发中,模块清晰更加易于相互合作。在此,本人将对MVP 的理解整理成文 和 Demo 向各位分享。



在简述MVP框架之前,需要阐述一下1个经典模型。
MVC
相信做软件开发的同学都听过MVC的大名。MVC全名是Model View Controller,分别表示模型、试图、控制器,是一种业务逻辑、数据、界面显示分离的的代码设计方式,从而是同一个程序可以使用不同的表现方式,例如同一批统计数据,可以用柱状图、饼图来表示。


通常
Model 表示数据处理部分
View 表示显示部分
Controller 表示逻辑处理部分




MVC 非常经典,以至于从1970至今,仍然被广泛使用,但是MVC仍然存在一些问题,由上图可以看出,由于MVC形成一个闭环,一旦其中一个模块进行了修改,那么就可能会影响到另外2个模块,这样其实是违背了低耦合原则(当然,实际开发中,MVC只是一个大框架,里面有很多很多的机制实现低耦合原则)。


应对与MVC的问题,MVP设计模式横空出现。
MVP是从MVC演变而来,其中
M = Model
V = View
P = Presenter



可以看到,在MVP 模式里,Presenter完全将View和Model分开,这样做有几个好处。
1、View和Model完全分离,如果Model被修改,对View的影响会非常小。难以理解的小伙伴,将Model当成是20000S、Z3、Z4这样的数据源,View就是无纸化表决界面,或者会更好理解。

2、同一个Presenter可以套用不同的View,例如应用运行在手机上时,显示的是PhoneView,而运行在平板上时,就显示TabletView。

3、把逻辑放在Presenter里,可以脱离用户界面,运行单元测试。



下面提供一份基于MVP架构的安卓应用,该应用包含一些伪代码,基于MVP实现的单元测试,以及MVP如何实现Model - View - Presenter 互相分离的方法,项目中我尽可能写了注释同时,同学在查看该项目时可以重点留意:
1、MVP是如何实现一次网络请求
2、如何接收来自服务器的消息通知,并对该消息进行处理
3、如何针对每一个层进行测试
4、想想自己的项目,如果需要改成MVP架构,应该怎么做

代码资源

猜你喜欢

转载自blog.csdn.net/dwdyoung/article/details/80656250