设计模式——初识MVP的设计模式

       陆陆续续接触了许多关于Android的知识,其中不乏有Java基础,Android的API,各类的算法知识。最近一段时间开始研究Android的设计模式,我本身非科班出身的程序员,没有经过科学系统的学习过设计模式的知识,我这样的门外汉只能说说自己的愚见了。

       我并不懂为什么要有这个MVP的设计模式,我只知道它把一切的问题搞得特别复杂,但也明白一个道理,存在即合理,可能在今后的实际工作里面我才能拨云见日,读懂它的灵魂所在。

今天我也通过一个登陆界面的实现来开始简述我眼中的MVP设计模式

在没有运用MVP设计模式之前,我认为的一个登陆界面的实现是这样的:
只有一个文件夹,文件夹中只有一个类,

设计模式——初识MVP的设计模式

一个类把所有的问题解决,相关代码就只有这些,

设计模式——初识MVP的设计模式

然而当我使用了MVP的设计模式之后,我的内心几乎是崩溃的,这么多文件夹,这么多类,这么多接口,到底是要干什么?

设计模式——初识MVP的设计模式设计模式——初识MVP的设计模式

在这些文件中我挣扎了两天,才明白了百度中关于MVP设计模式的概述:MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。设计模式——初识MVP的设计模式

这三个主要的类不是两两之间互相联系的,Model和View通过Presenter来联系的,这样做的目的是能更高效的来实现功能。

简单来说,View和Model是两个独立的小岛,他们之间只能通过Prestener这个小船来相互运输物资、通信联系。

通过一个按下Login按钮的事件开始,我来一步步走一走MVP的这个路程吧,相应的代码,在底下会提供。

设计模式——初识MVP的设计模式

当我们按下Login这个按钮的时候View中的LoginView就会调用Prestener接口中的Login方法,而Login中又会通过Prestener调用LoginView接口中的getUsername与getPassword这两个方法,紧接着通过Presenter调用userBiz中的Login函数,这样一个登陆的动作就实现了,Clear的动作也是差不多的,以此类推都是如此。

我也做了个思维导图可以更好的帮助你理解,设计模式——初识MVP的设计模式

以上的见解可以扩展到其它方面,这就是我现在认为的MVP设计模式。希望我的愚见能对你有所帮助。

点击打开链接


我瞅瞅