MVC模式和MVP模式的非深入探讨

1 篇文章 0 订阅

本文所作的是关于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)老板娘

厨子


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 的时候,

老板可以说少很多话(代码间的耦合性降低!减少工作量)!



至于为什么老板娘是?个嘛。。。

我也不知道老板会弄多少个老板娘。。。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值