MVC、MVP和MVVM之间的区别和联系

一、 MVC模式

  1. MVC是Model-View-Controller的缩写,它将应用程序划分为三个部分,分别但是Model、View、Controller,模型、视图和控制器,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑
  2. 三个部分的理解

Model:程序需要操作的数据和信息,用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法

View:提供给用户的操作界面,是程序的外壳,渲染页面

Controller:接收View层传递过来的指令,选取Model层对应的数据,进行相应的操作,用于控制应用程序的流程,及页面的业务逻辑

  1. MVC之间的通信之间是单向的,View层会从Model层拿取数据,View和Model层存在耦合

  2. MVC的特点

  • 实现关注点分离,即应用程序中的数据模型与业务和展示逻辑解耦
  • View传送指令到Controller
  • Controller接收指令完成业务逻辑后,要求Model改变状态
  • Model 将新的数据发送到View,用户得到反馈
  1. MVC的流程
  • 第一种:通过 View 接受指令,传递给 Controller,然后对模型进行修改或者查找底层数据,最后把改动渲染在视图上
  • 第二种:通过controller接受指令,传给Controller
  1. MVC的优点
  • 耦合性低
  • 重用性高
  • 生命周期成本低
  • MVC使开发和维护用户接口的技术含量降低
  • 可维护性高
  • 部署快
  1. MVC的缺点
  • 不适合小型、中等规模的应用程序
  • 视图和控制器间过于紧密连接
  • 视图对模型数据的低效率访问

二、 MVP模式

  1. MVP是单词Model View Presenter的首字母的缩写,分别表示数据层、视图层、发布层,它是MVC架构的一种演变
  2. MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向,各部分之间的通信,都是双向的,View 与 Model 不发生联系,都通过 Presenter 传递,V—>P—>M,M—>P—>V
  3. 在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller
  4. View层被称之为被动视图,不部署任何业务逻辑,而所有的业务逻辑都部署在Presenter 发布层
  5. MVP的特点:
  • M、V、P之间双向通信
  • View 与 Model 不通信,都通过 Presenter 传递,Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现
  • View 非常薄,不部署任何业务逻辑,称为”被动视图”(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里
  • Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时候可以保持Presenter的不变,这样就可以重用。不仅如此,还可以编写测试用的View,模拟用户的各种操作,从而实现对Presenter的测试,从而不需要使用自动化的测试工具
  1. MVP的优点
  • 模型与视图完全分离,我们可以修改视图而不影响模型
  • 可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部
  • 我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑,这个特性非常的有用,因为视图的变化总是比模型的变化频繁
  • 把逻辑放在Presenter中,进行单元测试,脱离用户接口来测试这些逻辑
  1. MVP的缺点

视图和Presenter的交互会过于频繁,联系过于紧密,耦合度过高,view变更,presenter也要变更

  1. MVC和MVP之间的区别
  • MVC中,View与Model层直接交互,读取数据,不通过Controller
  • MVP中,View与Model层不直接交互,而是通过Presenter与Controller进行交互,所有的交互都是发生在Presenter 的内部

三、 MVVM模式

  1. MVVM是Model、View、ViewModel的简写,MVVM模式其实是MV模式与WPF结合的应用方式时发展演变过来的一种新型架构模式,它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化
  2. MVVM相比较于MVP,将Presenter变成ViewModel,ViewModel可以理解成是View的数据模型和Presenter的合体
  3. ViewModel和View之间的交互通过Data Binding完成,而Data Binding可以实现双向的交互,这就使得视图和控制层之间的耦合程度进一步降低关注点分离更为彻底,同时减轻了Activity的压力
  4. MVVM中的数据可以实现双向绑定,即View层数据变化则ViewModel中的数据也随之变化,反之ViewModel中的数据变化,则View层数据也随之变化
  5. MVVM模式和MVC模式类似,主要目的是分离视图(View)和模型(Model)
  6. MVVM的优点
  • 低耦合,视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的”View”上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变
  • 可重用性,可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑
  • 独立开发,开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xml代码
  • 可测试,界面向来是比较难于测试的,而现在测试可以针对ViewModel来写
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MVCMVPMVVM 是三种常见的软件架构模式,用于组织和管理应用程序的代码。它们有一些共同的概念,但也有一些区别MVC(Model-View-Controller)是最早提出的架构模式之一。在 MVC 中,应用程序被分为三个主要部分: 1. 模型(Model):负责处理数据和业务逻辑。 2. 视图(View):负责显示数据给用户。 3. 控制器(Controller):负责接收用户输入,并根据输入更新模型和视图。 MVP(Model-View-Presenter)是 MVC 模式的变体。MVP 将视图和控制器的职责分离,引入了一个新的组件 Presenter,它作为视图和模型之间的中介。MVP 的关键特点是: 1. 模型(Model):负责处理数据和业务逻辑。 2. 视图(View):负责显示数据给用户。 3. 主持人(Presenter):负责处理用户输入,并更新模型和视图。 MVVM(Model-View-ViewModel)是一种相对较新的架构模式,主要用于现代前端开发。MVVM 借鉴了 MVCMVP 的思想,并引入了数据绑定的概念。MVVM 的关键特点是: 1. 模型(Model):负责处理数据和业务逻辑。 2. 视图(View):负责显示数据给用户。 3. 视图模型(ViewModel):负责将模型数据转换为视图所需的格式,并处理用户输入。同时,它还通过数据绑定机制与视图保持同步。 总的来说,MVCMVPMVVM 都是用于组织应用程序代码的架构模式,它们在组织代码和处理用户交互方面有一些区别。选择哪种架构模式取决于具体的应用场景和需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值