MVP开发模式

简介: MVP开发模式

MVP(Model-View-Presenter)是MVC的改良模式,由IBM的子公司Taligent提出。和MVC的相同之处在于:Controller/Presenter负责业务逻辑,Model管理数据,View负责显示。另外将Controller改名为Presenter,同时改变了通信方向。

在MVP模式中,View不再负责同步逻辑,而是由Presenter负责。Presenter既负责业务逻辑也负责同步逻辑。View需要提供操作界面的接口供Presenter调用。

MVP的优点:

(1)模型与视图完全分离,可以修改视图而不影响模型。

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

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

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

MVP的缺点是视图和Presenter的交互过于频繁,使得它们的联系过于紧密。也就是说,一旦视图变更了,Presenter也要变更。

MVVM开发模式

MVVM可以看作一种特殊的MVP(Passive View)模式,或者说是对MVP模式的一种特殊改良。MVVM模式最早由微软公司提出,并且在.NET的WPF和Sliverlight中大量使用。2005年,微软公司工程师John Gossman在自己的博客上首次公布了MVVM模式。

MVVM是在原有领域Model的基础上添加一个ViewModel,这个ViewModel除了正常的属性外,还包括一些供View显示用的属性。在MVVM中,Presenter被改名为ViewModel,这样便演变成了MVVM。在支持双向绑定的平台,MVVM更受欢迎,如图

(1)View:封装用户界面和用户界面的任何逻辑,是一个视觉元素,定义视图及其可视布局和样式中包含的控件。

(2)ViewModel:封装视图的表示逻辑和状态,不直接引用视图,负责协调Model和View。

(3)Model:封装业务逻辑和数据,负责管理应用程序的数据并将所需的业务规则和数据验证逻辑封装,确保它的一致性和有效性。Model类不直接引用View或ViewModel,不依赖于它们的实现方式。

Vue.js是当下很流行的一个MVVM开发模式框架,它是以数据驱动和组件化的思想构建的。相比于Angular.js,Vue.js提供了更加简洁、更易于理解的API,使得我们能够快速地掌握并使用Vue.js。

Vue在JavaScript前端开发库领域属于后来者,其他前端开发库有jQuery、ExtJS、Anguals、React等,但是Vue对于当前主流JavaScript库的地位具有很大的威胁。

Vue(读音/vjuː/,类似于View)是一套用于构建用户界面的渐进式框架。与其他大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于学习,还便于与第三方库或既有项目整合。另外,当与现代化的工具链及各种支持类库结合使用时,Vue也完全能够为复杂的单页应用提供驱动。

Vue的渐进式表现为:

声明式渲染→组件系统→客户端路由→大数据状态管理→构建工具。

前端框架Vue.js的作者尤雨溪(Evan You)是一位美籍华人,现居美国新泽西州,曾就职于Google Creative Labs和Meteor Development Group。由于他在工作中大量接触开源的Java项目,最后自己也走上了开源之路,现在全职开发和维护Vue.js。时至今日,Vue已成为全世界三大前端框架之一,领先于React和Angular,在国内更是首选。

Vue重要版本发布:

(1)2013年,在Google工作的尤雨溪,受到Angular的启发,开发出了一款轻量框架,最初命名为Seed。

(2)2013年12月,Seed更名为Vue,图标颜色采用代表勃勃生机的绿色,版本号是0.6.0。

(3)2014年1月24日,Vue正式对外发布,版本号是0.8.0。

(4)2014年2月25日,0.9.0版发布,有了自己的代号Animatrix,此后,重要的版本都会有自己的代号。

(5)2015年6月13日,0.12.0版发布,代号Dragon Ball,Laravel社区(一款流行的PHP框架的社区)首次使用Vue,Vue在JS社区也打响了知名度。

(6)2015年10月26日,1.0.0版发布,代号Evangelion是Vue历史上的第一个里程碑。同年,Vue-router、Vuex、Vue-cli相继发布,标志着Vue从一个视图层库发展为一个渐进式框架。

(7)2016年10月1日,2.0.0版发布,它是第二个重要的里程碑,它吸收了React的虚拟Dom方案,还支持服务端渲染。自从Vue 2.0版发布之后,Vue就成了前端领域的热门话题。

(8)2019年2月5日,Vue发布了2.6.0版,这是一个承前启后的版本,在它之后,将推出3.0.0版。

(9)2019年12月5日,在万众期待中,尤雨溪公布了Vue 3源代码,目前Vue 3处于Alpha版本。

目录
相关文章
|
6天前
|
Android开发
mvp架构
mvp架构
23 9
|
6天前
|
存储 前端开发 Java
Android应用开发中的MVP架构模式实践
【5月更文挑战第5天】随着移动应用开发的复杂性增加,传统的MVC(Model-View-Controller)架构在应对大型项目时显得笨重且不灵活。本文将探讨一种更适应现代Android应用开发的架构模式——MVP(Model-View-Presenter),并展示如何在Android项目中实现该模式以提升代码的可维护性和可测试性。通过对比分析MVP与传统MVC的差异,以及提供一个实际案例,读者将能深入了解MVP的优势和实施步骤。
|
6天前
|
前端开发 测试技术 数据处理
安卓开发中的MVP架构模式深度解析
【4月更文挑战第30天】在移动应用开发领域,模型-视图-呈现器(Model-View-Presenter, MVP)是一种广泛采用的架构模式。它旨在通过解耦组件间的直接交互来提高代码的可维护性和可测试性。本文将深入探讨MVP在安卓开发中的应用,揭示其如何促进代码的模块化,提升用户界面的响应性,并简化单元测试过程。我们将从理论概念出发,逐步过渡到实践案例,为读者提供一套行之有效的MVP实施策略。
|
11月前
|
存储 SQL 前端开发
借一个项目谈Android应用软件架构,你还在套用MVP 或MVVM吗
借一个项目谈Android应用软件架构,你还在套用MVP 或MVVM吗
|
12月前
|
存储 缓存 前端开发
“无架构”和“MVP”都救不了业务代码,MVVM能力挽狂澜?(二)(下)
“无架构”和“MVP”都救不了业务代码,MVVM能力挽狂澜?(二)
79 0
|
12月前
|
存储 前端开发 网络协议
“无架构”和“MVP”都救不了业务代码,MVVM能力挽狂澜?(二)
“无架构”和“MVP”都救不了业务代码,MVVM能力挽狂澜?(二)
88 0
|
12月前
|
存储 缓存 前端开发
“无架构”和“MVP”都救不了业务代码,MVVM能力挽狂澜?(一)
“无架构”和“MVP”都救不了业务代码,MVVM能力挽狂澜?(一)
77 0
|
前端开发 API 数据库
我的MVVM 开源小项目已发布~
我的MVVM 开源小项目已发布~
720 0
我的MVVM 开源小项目已发布~
|
JSON 前端开发 安全
MVVM后,下一代开发模式在哪?
写在前面 讨论下一代开发模式的演化、优化方向和可能,不一定正确希望和感兴趣的读者交流。 任何模式的选择一定要根据当时的开发需要来决定。比如:实验性、迭代很快的简单需求,一般会先选择MVC尝试,待明确方向后,再考虑改为MVVM。
179 0
MVVM后,下一代开发模式在哪?
|
Web App开发 XML 前端开发