本文所作的是关于MVP模式的非深入探讨!
MVP模式是MCV模式的衍生。
什么是MVC模式呢?
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
以上来自百度百科
什么是MVP模式呢?
MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。
假设
程序 是 饭馆
用户 是 客人
相对应的
V 服务员
C(P)老板娘
M 厨子
MVC模式的运行套路如下:
在一家饭馆里,
1.服务员V 跟 老板娘C 说 客人 要饭;
2.老板娘C 叫 厨子M 做饭;
3.服务员V 监听到 厨子M 做好饭以后 ,将饭端给 客人。
MVP模式的运行套路如下:
在一家饭馆里,
1.服务员V 跟 老板娘P 说 客人 要饭;
2.老板娘P 叫 厨子M 做饭;
3.老板娘P 监听到 厨子C 做好饭后,叫 服务员V 将饭端给 客人。
从以上可以发现,两种模式的主要分别在第3步。
MVC中允许服务员V和厨子M进行交互(服务员监听厨子)
MVP中不允许服务员V和厨子M进行交互(老板娘监听厨子,再叫服务员端饭)
也就是说,两种模式的区别就在于:
服务员V 认不认识 厨子M!
那这样,这两种模式相对的优缺点就出来了。
在较小的饭馆中(可能就只有1M+1V+1C):
用MVP模式就显得麻烦和多余了,相对的用MVC模式就简单和高效许多。
在较大的饭馆中(可能有1000M+1000V+?C):
这时,MVC模式简单和高效的优点依然存在。
但是,如果这时候老板(程序员)跳出来说:
换 服务员V!换 厨子M!
这下好玩了
如果在MVC模式下,老板 需要做:
1.告诉新的 服务员V ,哪个是 老板娘C;
2.告诉新的 服务员V ,哪个是他要监听的 厨子M;
3.告诉 老板娘C,哪个是新的 服务员V;
4.告诉 老板娘C,哪个是新的 厨子M。
在MVP模式下,老板 需要做:
1.告诉新的 服务员V ,哪个是 老板娘P;
2.告诉 老板娘P,哪个是新的 服务员V;
3.告诉 老板娘P,哪个是新的 厨子M。
相对于MVC模式,在MVP模式中换 服务员V 或 厨子M 的时候,
老板可以说少很多话(代码间的耦合性降低!减少工作量)!
至于为什么老板娘是?个嘛。。。
我也不知道老板会弄多少个老板娘。。。