当前位置: 首页 > news >正文

MVC、MVP、MVVM区别

MVC、MVP、MVVM区别

  • MVC(Model-View-Controller) 。是一种设计模式,通常用于组织与应用程序的数据流。它通常包括三个组件:模型(Model)、视图(View)和控制器(Controller)1。

    • 模型(Model):负责应用程序中数据逻辑的部分,通常数据模型唯一负责在数据库中存取数据。
    • 视图(View):依据模型创建,负责其中数据的显示。
    • 控制器(Controller):应用程序中处理用户交互的部分,负责从视图读取数据,控制用户的输入,并向模型层发送数据。

    这一设计模式广泛应用于语言的框架中,不论是java的spring 还是python 的django,flask,go的gin框架。Django中又称之为MTV (model-template-view),但实际上就是MVC,没啥区别。

    在这里插入图片描述

MVP, 不是(Most Valuable Player)哈, 这里的 MVP 指 Model、View和 Presenter
在这里插入图片描述

并不是简单的把Controller 替换成了 Presenter, 而是将View 完全独立处理,仅负责视图相关操作,处理请求进来的数据已经返回处理好的数据, 避免在View 有过多的逻辑处理,而Presenter 则专心复杂和 Model 进行数据获取相关逻辑。

MVVM,它由三部分组成:Model、View和ViewModel

在这里插入图片描述

  1. Model:指数据模型和业务逻辑,是应用程序中处理数据和业务逻辑的部分。在WPF中,Model通常是一个类,这个类包含了数据的属性和行为。
  2. View:指用户界面,是应用程序中用户与计算机交互的部分。
  3. ViewModel:是连接Model和View的桥梁,它包含了与View相关的所有数据和业务逻辑,以及将数据绑定到View的方法。ViewModel为View提供了数据和业务逻辑的接口,使得View可以与Model进行交互。

在MVVM中,View和Model之间的联系是通过ViewModel进行处理的。ViewModel通过数据绑定将View中的控件与Model中的数据进行关联,当数据发生变化时,View中的控件也会相应地更新。同时,ViewModel也处理了用户在View中进行的交互操作,将用户的输入转化为业务逻辑进行处理,并将处理结果反馈给View,使得用户可以获得更好的交互体验。

相对于传统的MVC架构模式,MVVM更加强调View和Model之间的松散耦合,通过ViewModel进行数据绑定和业务逻辑处理,使得开发人员可以更加专注于业务逻辑和数据的开发,而设计人员可以更加专注于页面设计。MVVM框架便是前后端分离框架发展史上的一次思想的完全变革。它是将数据模型双向绑定的思想作为变革的核心,即View的变动,自动反映在ViewModel上面,而ViewModel的变动也会随即反映在View上面,从而实现数据与模型的双向绑定

MVP 和 MVVM 共同点在于,完全断开了View 和 Model 直接的联系,起到了很好的中间桥梁作用。

http://www.lryc.cn/news/220094.html

相关文章:

  • 【Kotlin精简】第7章 泛型
  • ElasticSearch与Lucene是什么关系?Lucene又是什么?
  • 【算法练习Day40】打家劫舍打家劫舍 II打家劫舍 III
  • 双十一运动健身好物推荐,这几款健身好物一定不要错过!
  • Angular异步数据流编程
  • 古典舞学习的独舞与群舞,古典舞的成品舞蹈教学大全
  • 听GPT 讲Rust源代码--library/std(16)
  • 计算机编程软件编程基础知识,中文编程工具下载分享
  • 微信小程序里怎么添加砍价活动
  • 如何在Python爬虫中使用IP代理以避免反爬虫机制
  • 干货丨Linux终端常见用法总结(收藏)
  • 【RealTek sdk-3.4.14b】RTL8197FH-VG+RTL8812FR实现实现Host 网络和Guest 网络隔离以及各个连接终端间隔离功能
  • 【漏洞复现】Metinfo6.0.0任意文件读取漏洞复现
  • 3.22每日一题(二重积分求平面区域面积)
  • Hadoop环境搭建
  • SpringBoot_mybatis-plus使用json字段
  • 牛客出bug(华为机试HJ71)
  • 第十一章 日志管理
  • 灯串跨境外贸出口欧美CE认证和UL588报告周期解析
  • 大数据中的分布式文件系统MapReduce的选择题
  • storm安装手册及笔记
  • vue 视频流播放
  • Azure 机器学习 - 使用Python SDK训练模型
  • C#成员属性代码示例
  • 3、Dockerfile 深入与其他细节
  • 大数据之陌陌聊天数据分析案例
  • 03 贝尔曼公式
  • 学习视频剪辑:批量添加srt字幕,让视频更生动
  • Windows桌面便签工具推荐使用哪一款?
  • 【微信小程序】自定义组件(二)