MVP 模式

来源:互联网 发布:js原生tab切换 编辑:程序博客网 时间:2024/06/06 04:14

MVP 模式

MVP 模式是由 MVC 模式衍生而来。MVP 模式将 Controller 改为 Presenter,同时改变了通信方向。

这里写图片描述

Model :定义使用者界面所需要被显示的资料模型,一个模型包含着相关的业务逻辑。View :视图为呈现使用者界面的终端,用以表现来自 Model 的资料,和使用者命令路由再经过 Presenter 对事件处理后的资料。Presenter :Presenter 层是连接View 层与 Model 层的桥梁并对业务逻辑进行处理。MVP 中 Model 与 View 无法直接进行交互。所以在 Presenter 层它会从 Model 层获得所需要的数据,进行一些适当的处理后交由 View 层进行显示。    MVP 和 MVC 最大的区别是 P 层代替了 C 层,控制的不再是具体的实现而是接口。在 MVP 中View 并不直接使用 Model,它们之间的通信是通过 Presenter 来进行的,所有的交互都发生在 Presenter 内部,而在 MVC 中 View 会直接从 Model 中读取数据而不是通过 Controller 。这样不管是多人开发还是频繁的 UI 更改,都不会影响 P 层,只要 C 和 V 层的接口不变,UI 的改动只需要更改 V 层的实现而已,C 层的实现都不需要改,这样代码就很清晰,而且方便测试,因为逻辑层和视图层完全分离了。

MVP的优点

1、低耦合:模型与视图完全分离,使其更关注自身业务逻辑,结构清晰,维护方便。2、代码复用率提高。3、我们可以将一个 Presenter 用于多个视图,而不需要改变 Presenter的 逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。4、如果我们把逻辑放在 Presenter 中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)

MVP的缺点

由于对视图的渲染放在了 Presenter 中,所以视图和 Presenter 的交互会过于频繁。主要表现在每个view都有presenter ,类相对比较多。
0 0
原创粉丝点击