软件开发的目的是构建解决方案,以解决用户和企业的需求和问题。为了实现这一点,使用了不同的技术和体系结构模式,例如Model-View-ViewModel(MVVM)和Model-View-Presenter(MVP)。

与任何制造的产品一样,第一步是计划和设计阶段。软件设计过程可以是基于首选技术工具集的规范,并且可以涵盖从概念–到–规划–到–实现–到更新和修改的所有活动。

它涵盖了基于所选架构模式的低层和高层体系结构设计,并使用设计模式绘制了可重用的解决方案。

软件应用程序结构

软件体系结构定义了满足技术,操作和用户要求的应用程序结构,并指代代码的组织和管理方式。

确定软件应用程序的体系结构至关重要,因为它不是已经开发的应用程序的简单易变的部分;因此,必须在开始任何编程之前确定体系结构模式。

架构模式与设计模式有些不同,因为它们通过解决更多技术问题(例如硬件性能和局限性以及高可用性)而扩大了范围。 MVC,MVVM和MVP是不同体系结构模式的示例。

另一方面,设计模式是形式化的最佳实践,可促进可重用的面向对象的开发,并且比应用程序的体系结构更易于维护和更改。

架构模式

模型视图控制器(MVC)是为Web应用程序开发的最早的体系结构模式之一,在90年代中期到后期尤其是在Java社区中得到了普及。

诸如Django for Python和Rails(Ruby on Rails)之类的较新框架非常注重快速部署,这就是为什么MVC占据市场份额作为建筑模式的最大吸引力的原因。

传统上,用户界面开发包含许多代码来处理复杂的逻辑,因此设计了架构模式以减少用户界面(UI)级别的代码,使其更加“干净”和可管理。

因此,使用MVC模式,Web应用程序由

  • 模型(数据)
  • 视图(查看和操作数据的界面)
  • 控制器(对数据执行的操作和动作)

模型处理数据和业务逻辑,并且模型与控制器或视图之间没有依赖关系。

视图以支持的格式和所需的布局向用户显示数据,并且当控制器接收到用户请求(以获取数据)时,它调用完成请求所需的相关资源。

模型视图呈现器(MVP)

MVP模式已经存在了一段时间,它是MVC的变体。它是专为测试自动化而设计的,其目的是增加可以通过自动化进行测试的代码量,并且该模式解决了表示层的一些问题,从而将业务逻辑与UI隔离开来。

屏幕是视图,显示的数据是模型,呈现器将两者挂钩。

MVP包含以下组成部分,分别负责:

  • 模型(定义要显示的数据)
  • 视图(显示来自模型的数据并将用户请求路由到呈现器)。
  • 呈现器(在视图和模型之间交互并将它们挂钩在一起)
  • 视图(网页)通过将在视图中启动的事件(用户请求)转发到呈现器来显示和管理页面控件。

呈现器通过读取和更新模型以更改视图来响应这些事件,因此,呈现器的责任是绑定模型和视图。

在查看了MVC和MVP模式之后,通用性对每个组件都有各自的职责,并且它们促进了视图(UI)和模型(数据)之间的分离。这些模式之间的显着差异在模式的实现方式上更加明显。

MVP可能是实现高级解决方案的复杂模式,但如果将其设计为设计良好的解决方案,则无疑会带来很多好处,尽管它不一定是简单解决方案的适当选择。

模型-视图-视图模型(MVVM)

MVVM模式是专门为Windows Presentation Foundation(WPF)和Microsoft Silverlight平台设计的,可以在所有XAML [i]平台上使用。

WPF是一个Microsoft系统,它在基于Windows的程序中呈现用户界面,并且最初在.NET Framework 3.0中发布。

MVVM是从MVC改进而来的,在这种模式下,视图与行为,事件和数据绑定一起处于活动状态,并且视图与ViewModel同步(这可以分离表示并公开用于管理和操作模型的方法和命令)。

MVVM包含三个核心组件:

  • 模型(使用验证和业务逻辑表示数据)
  • 视图(视图负责定义用户在屏幕上看到的内容的结构,布局和外观。理想情况下,视图仅使用XAML进行定义,并且背后的代码有限,其中不包含业务逻辑。双向数据-在View和ViewModel之间绑定以显示使模型和ViewModel与View同步的可启用对象)
  • ViewModel(将视图与模型分离,并公开用于处理数据的方法和命令(模型)。

视图从ViewModel接收数据(通过数据绑定和方法),并且在运行时,响应ViewModel中的事件时,视图将发生变化。

ViewModel在视图和模型之间进行中介,并处理视图逻辑。它与模型交互–从模型中获取数据并将其呈现给视图以显示。

这些组件都相互分离,从而具有更大的灵活性,可以独立地处理它们,隔离单元测试并换出它们,而不会影响任何其他组件。

这种结构允许模型和其他组件独立发展,从而使开发人员可以同时处理解决方案的不同方面。例如,在设计人员使用View的情况下,他们只需要生成数据样本即可,而无需访问其他组件。由于视图是在XAML中实现的,因此可以方便地重新设计用户界面。

如前所述,在MVP中,简单的解决方案将不需要架构和设计模式,例如“Hello World!”太基本了,无法遵循任何模式。但是,随着更多功能,功能和组件的引入,应用程序的复杂性增加,需要管理的代码量也随之增加。

总结

自从用户界面开发开始以来,设计模式就变得越来越流行,以使开发过程变得更容易,应用程序更具可伸缩性并有助于更轻松的测试。

MVP和MVVM模式区别:

  • 在MVP和MVVM中,视图都是应用程序的入口点。
  • 在MVP中,View和Presenter之间存在一对一的映射关系,而在MVVM中,View和ViewModel之间是一对多的关系。
  • MVP主要用于Windows Forms和Windows Phone应用程序,而MVVM用于Silverlight,WPF,Knockout/AngularJS等。

欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:MVVM和MVP
本文链接:https://www.vsdiffer.com/vs/mvvm-vs-mvp.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。