MVC和MVP的特点和区别

MVC

MVC是Model(模型层)、View(视图层)、Controller的组成的一种android开发框架,用一种业务逻辑、数据、界面分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性格定制界面和用户交互的同时,不需要修改业务逻辑的代码。

Model(模型)

是应用程序中处理应用程序数据逻辑的部分,一般用来存储数据

View(视图)

是应用程序中的用户可视界面,也就是用来展示Model层的数据,通常是根据Model的数据来创建

Controller(控制器)

是应用程序中处理用户交互的部分。通常是从View层读取操作信息,Controller在经过一系列的逻辑处理后,改变Model的数据状态,然后Model层将改变之后的数据展示到View层中,Contrller层本身不需要输出任何东西,和做什么处理,只需要接收请求,决定用哪个模型处理请求,和哪个视图返回数据。

MVC有助于管理复杂的应用程序,可以让开发人员单独进行某一层的开发。

优点:

1.耦合性低

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

2.重用性高

允许不同样式的视图共享一个模型

3.生命周期成本低

是开发和维护用户接口的技术含量降低

4.部署快

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

5.维护性高

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

缺点:

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

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

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

MVP

mvp全称Model、view、presenter,MVP是从经典的模式MVC演变而来,他们基本思想有想通的地方,MVC的controller层就相当于MVP的presenter层,负责逻辑的处理,Model用来提供数据,View负责显示。

特点:

MVP和MVC最大的区别就是:在MVP中View并不会直接使用Model,他们的之间的所有通信都是通过Presenter层进行,所有的交互都发生的presenter内部,在MVC中View会直接从Model中读取数据而不是通过Controller.

在MVC里,View是可以直接访问Model的,从而View里会包含Model信息,不可避免的还要包括一些业务逻辑。导致更改View也是比较困难的。

优点:

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

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

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

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

缺点:

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

猜你喜欢

转载自blog.csdn.net/qq_42234894/article/details/85268600