2020-10-20

查阅资料,了解MVC与MVP的区别:

MVC:
View:布局的xml文件,或者纯Java写的布局,可以把页面显示的逻辑直接放在View中。
Model:数据处理层,可以直接和View进行交互。
Controller:把特定的功能逻辑抽离出来,作为控制层,保证View层和Model层的功能单一性,便于维护。
MVC模式相对比较简单,尤其是View层,我们可以通过jsp等技术直接操作页面,完成和Controlller层和Model层的交互,所以MVC的核心是在View层。

优点:
1.耦合性低
视图层和业务层分离,这样就允许改变视图,不用重新编译模型和控制器的代码,同样当业务流程和业务需求改变也只需要改变模型层,应为M、V、C的分离所以很容易改变应用程序的数据层和业务规则。

2.重用性高
允许不同样式的视图共享一个模型

3.生命周期成本低
是开发和维护用户接口的技术含量降低

4.部署快
他可以让一个开发人员专注于业务逻辑的开发,而另一个开发人员专注于界面的开发。

5.维护性高
因为M、V、C层的分离所以更易于维护和修改

缺点:
1.不适合小型和中型规模的应用程序

2.视图和控制器之间过于紧密的连接

视图和控制器是相互分离的,但是他们的联系特别紧密,也就是视图不能失去控制器,控制器也不能失去视图。

MVP:
View:Activity作为显示层。
Presenter:逻辑层,从Activity中抽离出功能逻辑,简化Activity的代码。
Model:数据处理层,主要负责网络请求,本地数据加载等操作,进一步简化Activity的代码。
从MVP的构成来看,Presenter和Model都是为了View层存在的,所以MVP的核心仍然是View层。

MVC的View层和Model层本身就是分离的,Controller层主要是简化View层的逻辑代码。
MVP的Presenter层和Model层都是为了拆分View层而存在的。

优点:
1、模型与视图完全分离,我们可以修改视图而不影响模型

2、可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部

3、我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。

4、如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑

缺点:
由于对视图的渲染放在了Presenter中,所以视图和Presenter的交互会过于频繁。还有一点需要明白,如果Presenter过多地渲染了视图,往往会使得它与特定的视图的联系过于紧密。一旦视图需要变更,那么Presenter也需要变更了。比如说,原本用来呈现Html的Presenter现在也需要用于呈现Pdf了,那么视图很有可能也需要变更。

MVC和MVP的区别:
Presenter与Controller都扮演了逻辑层的角色,但是Presenter层的功能相对更复杂,因为他负责和View的双向交互,Controller只是单向的中介。因为Presenter是从View层抽离出来的,通常和View是一对一的关系,而Controller是面向业务的,往往是单例模式或者提供静态方法。

MVP中View和Model是不能进行通信的,虽然加重了P层的负担,但是有利于维护View层和Model层,如果条件允许,我们还可以对Presenter进一步拆分,来弥补Presenter负担过重的问题。

MVC中View和Model层可以直接交互,虽然方便了两者之间的交互,但是耦合性相对较高。

在MVP中View并不会直接使用Model,他们的之间的所有通信都是通过Presenter层进行,所有的交互都发生的presenter内部,在MVC中View会直接从Model中读取数据而不是通过Controller。在MVC里,View是可以直接访问Model的,从而View里会包含Model信息,不可避免的还要包括一些业务逻辑。导致更改View也是比较困难的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值