`

MVC,MVP 和 MVVM 的图示

 
阅读更多

复杂的软件必须有清晰合理的架构,否则无法开发和维护。

MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用。它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了。

昨天晚上,我读了《Scaling Isomorphic Javascript Code》,突然意识到,它们的区别非常简单。我用几段话,就可以说清。

(题图:摄于瓦伦西亚,西班牙,2014年8月)

一、MVC

MVC模式的意思是,软件可以分成三个部分。

  • 视图(View):用户界面。
  • 控制器(Controller):业务逻辑
  • 模型(Model):数据保存

各部分之间的通信方式如下。

  1. View 传送指令到 Controller
  2. Controller 完成业务逻辑后,要求 Model 改变状态
  3. Model 将新的数据发送到 View,用户得到反馈

所有通信都是单向的。

二、互动模式

接受用户指令时,MVC 可以分成两种方式。一种是通过 View 接受指令,传递给 Controller。

另一种是直接通过controller接受指令。

三、实例:Backbone

实际项目往往采用更灵活的方式,以 Backbone.js 为例。

1. 用户可以向 View 发送指令(DOM 事件),再由 View 直接要求 Model 改变状态。

2. 用户也可以直接向 Controller 发送指令(改变 URL 触发 hashChange 事件),再由 Controller 发送给 View。

3. Controller 非常薄,只起到路由的作用,而 View 非常厚,业务逻辑都部署在 View。所以,Backbone 索性取消了 Controller,只保留一个 Router(路由器) 。

四、MVP

MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向。

1. 各部分之间的通信,都是双向的。

2. View 与 Model 不发生联系,都通过 Presenter 传递。

3. View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。

五、MVVM

MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。

唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。Angular 和Ember 都采用这种模式。

(完)

分享到:
评论

相关推荐

    MVC,MVP 和 MVVM 的图示.html

    MVC,MVP 和 MVVM 的图示

    Android mvc、mvp、mvvm示例

    MVC在小型项目中可能足够,而MVP和MVVM更适合大型复杂项目,尤其是需要高度测试和解耦的场景。MVP提供了良好的测试基础,而MVVM则利用数据绑定简化了视图和业务逻辑的交互。 在你提供的示例项目中,`MVC+MVP+MVVM`...

    浅谈三大模式(mvc,mvp,mvvm)

    通过观察和实践,你可以掌握如何在实际项目中有效地运用MVC、MVP和MVVM,以及如何利用观察者模式和事件系统优化应用程序的结构和交互。 总的来说,MVC、MVP和MVVM都是为了提高代码的可读性、可维护性和可测试性而...

    Android中的MVC、MVP和MVVM

    Android中MVC、MVP和MVVM的使用,区别,以及使用场景

    MVC、MVP和MVVM

    本示例着重探讨了三种常见的架构模式:MVC(Model-View-Controller)、MVP(Model-View-Presenter)和MVVM(Model-View-ViewModel),以及DataBinding的基本运用。下面将对这些知识点进行详细解释。 首先,我们来...

    MVC_MVP_MVVM_demos

    总结来说,MVC、MVP和MVVM都是为了分离关注点,提高代码可维护性和测试性。选择哪种模式取决于项目需求、团队经验和开发平台。MVC适用于简单的应用,MVP适合大型项目和团队协作,而MVVM则在需要高度数据绑定和自动化...

    几张图看明白MVC MVP MVVM

    MVC、MVP和MVVM是三种常见的软件架构设计模式,它们主要用于分离用户界面(UI)与业务逻辑,以提高代码的可维护性和可测试性。下面将详细地介绍这三种模式的工作原理、组成部分以及它们之间的异同。 **MVC(Model-...

    Android MVVM 解读 2.MVC, MVP, MVVM

    MVC, MVP和MVVM的区别和联系,是一个老生常谈的问题, 这里也不过多的进行描述 可以先查看下以下的两个链接: MVC,MVP 和 MVVM 模式如何选择? 你真的理解了MVC, MVP, MVVM吗? 其中第一篇文章是比较偏理论的分析, 第...

    mvc,mvp,mvvm简单框架

    1. **模型(Model)**:仍然负责业务逻辑和数据管理,与MVC和MVP中的模型类似。 2. **视图(View)**:用户界面,但其状态和行为直接绑定到ViewModel的属性和命令。 3. **视图模型(ViewModel)**:作为视图和模型...

    MVC,MVP 和 MVVM 的图示1

    总结起来,MVC、MVP和MVVM模式的主要区别在于它们处理用户交互、业务逻辑和数据模型之间关系的方式。MVC强调单向数据流,MVP通过Presenter实现双向通信,而MVVM则通过双向绑定简化了数据同步的过程。每种模式都有其...

    基于Java的Android MVC/MVP/MVVM框架设计源码

    本项目是基于Java的Android MVC/MVP/MVVM框架设计源码,包含428个文件,其中包括316个Java文件、42个...这个项目是一个Android框架,实现了MVC、MVP和MVVM设计模式,旨在帮助开发者构建高效、可维护的Android应用程序。

    MVCMVPMVVM实例demo.zip

    压缩包中是6个实例demo,包括MVC,MVC的变种,MVP,MVP_login(实际开发中的使用),MVVM,FBKVO;demo对应着简书文章:https://www.jianshu.com/p/dc353e332b0e,如果你没有积分下载,也可以去简书给我留言,可以给你发

    Android架构设计(MVC/MVP/MVVM)

    本项目深入探讨了三种主流的Android架构模式:MVC(Model-View-Controller)、MVP(Model-View-Presenter)以及MVVM(Model-View-ViewModel)。以下是对这些架构设计模式的详细解释: 1. MVC(Model-View-...

    Android架构(MVC、MVP和MVVM).ppt

    PPT的形式展示Android 常用架构(MVC、MVP和MVVM) 简单明了 包含例题以及文字解释 对于刚上路的朋友 不懂架构的 可以下载看看 自己学习一下 有助于项目优化 对后期拓展有很大的帮助!

    android mvc、mvp、mvvm项目源码

    在Android应用开发中,选择合适的架构模式...例如,小型项目可能更适合MVC,而大型复杂项目则可能受益于MVP或MVVM的结构清晰和低耦合特性。在实际开发中,也可以根据团队经验和项目规模灵活选择和混合使用这些模式。

    AndroidMvc, Android MVC/MVP/MVVM 框架.zip

    AndroidMvc, Android MVC/MVP/MVVM 框架 AndroidMvc框架 特性易于实现 MVC/MVP/MVVM Pattern 用于Android开发增强的Android生命周期- 比如 视图需要刷新时,但不需要旋转,onResume() 不足以区分两个场景。

    mvc-mvp-mvvm:javascript简单实现mvc mvp mvvm

    在软件开发领域,模型-视图-控制器(MVC)、模型-视图- presenter(MVP)和模型-视图-ViewModel(MVVM)是三种常见的设计模式,尤其是在JavaScript开发中广泛使用。这些模式主要用于分离应用程序的业务逻辑、数据...

    AndroidMVC,MVP,MVVM架构实现

    总结来说,AndroidFrameStudy项目提供了一个很好的学习平台,通过对比分析MVC、MVP和MVVM的实现,开发者可以更好地理解这些架构模式,提高自己的Android开发技能,同时优化项目的结构和可维护性。

    Android 架构MVC MVP MVVM 实践

    MVC、MVP和MVVM是软件比较常用的三种软件架构,这三种架构的目的都是分离,避免将过多的逻辑全部堆积在一个类中。 在Android中,Activity中既有UI的相关处理逻辑,又有数据获取逻辑,从而导致Activity逻辑复杂不...

    MVC MVP MVVM面试题

    MVC、MVP、MVVM面试题 MVC模型-view-controller...在实际开发中,MVC、MVP和MVVM模式都可以用于构建应用程序,但它们各有其优缺点。开发者需要根据实际情况选择合适的模式,以提高应用程序的可维护性和可扩展性。

Global site tag (gtag.js) - Google Analytics