MVC和MVVM的真正区别

MVC

    MVC 是 Model-View- Controller 的简写。即模型-视图-控制器。M 和 V 指的意思和 MVVM 中的 M 和 V 意思一样。C 即 Controller 指的是页面业务逻辑。使用 MVC 的目的就是将 M 和 V 的代码分离。MVC 是单向通信,也就是 View 跟 Model,必须通过 Controller 来承上启下。

Model(模型)
    是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。

View(视图)
    是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。

Controller(控制器)
    是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
优点

  • 低耦合
  • 高重用性
  • 可维护性较好

缺点

  • Controller 比较笨重
  • Model 过于轻量
  • 可测试性较差

MVVM

    MVVM 是 Model-View-ViewModel 的简写。它本质上就是 MVC 的改进版。MVVM 就是将其中的 View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。
    Vue.js 是一个提供了 MVVM 风格的双向数据绑定的 Javascript 库,专注于 View 层。它的核心是 MVVM 中的 VM,也就是 ViewModel。 ViewModel 负责连接 View 和 Model,保证视图和数据的一致性,这种轻量级的架构让前端开发更加高效、便捷。
在这里插入图片描述
Model(模型)
    模型是指代表真实状态内容的领域模型(面向对象),或指代表内容的数据访问层(以数据为中心),负责存储数据

View(视图)
    视图是用户在屏幕上看到的结构、布局和外观(UI),用于显示数据

ViewModel(视图模型)
    视图模型是暴露公共属性和命令的视图的抽象。MVVM 没有 MVC 模式的控制器,也没有 MVP 模式的presenter,有的是一个绑定器。在视图模型中,绑定器在视图和数据绑定器之间进行通信

优点

  • 低耦合
        视图(View)可以独立于 Model 变化和修改,一个 ViewModel 可以绑定到不同的 View 上,当 View 变化的时候Model 可以不变,当 Model 变化的时候 View 也可以不变
  • 可重用性
        你可以把一些视图逻辑放在一个 ViewModel 里面,让很多 View 重用这段视图逻辑
  • 独立开发
        开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xaml代码
  • 可测试
        界面素来是比较难于测试的,而现在测试可以针对ViewModel来写

缺点

  • 数据绑定使得 Bug 很难被调试
  • 一个大的模块中model也会很大,虽然使用方便了也很容易保证了数据的一致性,当时长期持有,不释放内存就造成了花费更多的内存
  • 数据双向绑定不利于代码重用

MVC 和 MVVM 的区别

    MVC 和 MVVM 其实区别并不大,都是一种设计思想,目的是分离视图(View)和模型(Model)。主要就是 MVC 中 Controller 演变成 MVVM 中的 ViewModel。MVVM 实现了 View 和 Model 的自动同步,也就是双向数据绑定。MVVM 主要解决了 MVC 中大量的 DOM 操作使页面渲染性能降低,加载速度变慢,影响用户体验和当 Model 频繁发生变化,开发者需要主动更新到 View 的问题。

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半度℃温热

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值