MVP设计模式论文

2023-01-25

1 MVP基本内容

MVP的全称为Model-View-Presenter, Model提供数据, View负责显示, Controller/Presenter负责逻辑的处理。MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model, 它们之间的通信是通过Presenter (MVC中的Controller) 来进行的, 所有的交互都发生在Presenter内部, 而在MVC中View会直接从Model中读取数据而不是通过Controller。

2 MVC和MVP的区别

MVP是从经典的模式MVC演变而来, 它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理, Model提供数据, View负责显示。作为一种新的模式, MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model, 它们之间的通信是通过Presenter (MVC中的Controller) 来进行的, 所有的交互都发生在Presenter内部, 而在MVC中View会从直接Model中读取数据而不是通过Controller。

在MVC里, View是可以直接访问Model的。从而, View里会包含Model信息, 不可避免的还要包括一些业务逻辑。在MV模型里, 更关注的Model的不变, 而同时有多个对Model的不同显示及View。所以, 在MVC模型里, Model不依赖于View, 但是View是依赖于Model的。不仅如此, 因为有一些业务逻辑在Vie里实现了, 导致要更改View也是比较困难的, 至少那些业务逻辑是无法重用的。[1]

3 MVP如何解决MVC的问题

在MVP里, Presenter完全把Model和View进行了分离, 主要的程序逻辑在Presenter里实现。而且, Presenter与具体的View是没有直接关联的, 而是通过定义好的接口进行交互, 从而使得在变更View时候可以保持Presenter的不变, 即重用。不仅如此, 我们还可以编写测试用的View, 模拟用户的各种操作, 从而实现对Presenter的测试, 而不需要使用自动化的测试工具。我们甚至可以在Model和View都没有完成时候, 就可以通过编写Mock Object (即实现了Model和View的接口, 但没有具体的内容的) 来测试Presenter的逻辑。在MVP里, 应用程序的逻辑主要在Presenter来实现, 其中的View是很薄的一层。因此就有人提出了Presenter First的设计模式, 就是根据User Story来首先设计和开发Presenter。在这个过程中, View是很简单的, 能够把信息显示清楚就可以了。在后面, 根据需要再随便更改View, 而对Presenter没有任何的影响了。如果要实现的UI比较复杂, 而且相关的显示逻辑还跟Model有关系, 就可以在View和Presenter之间放置一个Adapter。由这个Adapter来访问Model和View, 避免两者之间的关联。而同时, 因为Adapter实现了View的接口, 从而可以保证与Presenter之间接口的不变。这样就可以保证View和Presenter之间接口的简洁, 又不失去UI的灵活性。在MVP模式里, View只应该有简单的Set/Get的方法, 用户输入和设置界面显示的内容, 除此就不应该有更多的内容, 绝不容许直接访问Model——这就是与MVC很大的不同之处。

4 MVP模式的最佳实践Twaver Java

Twaver Java是基于Java Swing和Java2D技术的产品分支。它由一个开放的MVP开发框架、Data Box数据容器、一组Swing可视化组件、丰富的预定义管理对象所构成, 用于呈现各种复杂的电信网络数据和信息。TWaver Java非常适合应用在海量数据、交互复杂、实时性强、对效率要求苛刻的各类电信应用软件中。使用TWaver Java开发的软件可以部署在桌面, 也可以通过Java Applet嵌入到浏览器Web页面中, 还可以使用Java Web Start和JNLP技术打包并部署在互联网上, 实现程序的自动引导、启动和更新[2]。

5 MVP的优点和缺点

MVP的优点:模型与视图完全分离, 在项目开发过程中, 可以修改视图而不影响模型, 可以更高效地使用模型, 因为所有的交互都发生在一个地方——Presenter内部;可以将一个Presenter用于多个视图, 而不需要改变Presenter的逻辑, 这个特性非常的有用, 因为视图的变化总是比模型的变化频繁;如果把逻辑放在Presenter中, 可以脱离用户接口来测试这些逻辑 (单元测试) 。

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

摘要:MVP是由MVC演变而来的经典设计模式, 本文简介MVP基本概念, 阐述MVC和MVP的基本区别, 探究MVP如何解决MVC设计模式存在的主要问题, 总结MVP的优点和缺点。

参考文献

[1] http://baike.baidu.com/view/3456444.htm.

[2] http://twaver.servasoft.com/product/twaverjava.

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

上一篇:奥曲肽在老年不完全性肠梗阻患者治疗中的效果观察下一篇:水利工程建设对水生态环境影响论文