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

MVC、MVP、MVVM 架构 笔记

个人笔记 by Ai, 如有错误 望指正谢谢


一、主流 Web MVC

流程:用户操作 →Controller-请求读/改数据 →Model-执行请求并返回结果 →Controller-传递结果→View-根据结果更新页面

这里的 View不依赖Model行为,但大概率依赖数据契约,简单说就是 Model 负责规定数据“有什么”,View 则根据这些数据的格式来决定页面“怎么显示”。属于耦合度偏低的数据耦合。


二、经典 MVC

流程①:View-主动监听 →Model-数据变动后通知 →View-拉取变动后的数据更新页面

流程②:用户操作 →Controller-请求读/改数据 →Model-变更数据,通知观察者(这里指的View)

View持有Model引用,但只读不写,同上面本质上是一回事,数据耦合、轻耦合。


三、MVP

流程:用户操作 →Presenter-读/改数据 →Model-返回结果 →Presenter-操控→View

和上面的主流 Web MVC非常相似,不同是View:

  • ViewModel完全无耦合。
  • View更抽象更通用化,它可能提供一系列元素或调用接口,供Presenter自由实现

举例:一个通用的账户登录页面,页面包含标题、背景图、账号密码输入框、登录按钮,以及错误弹窗。采用 MVP 架构时,View 只需定义好这些 UI 元素,可能再封装一个弹窗调用方法就完了。它就像一个纯静态界面,只负责展示视图本身,完全不理解按钮、输入框对应的业务逻辑,具体功能实现全部交由 Presenter 处理。

如果换成上面主流的 Web MVC,情况就大不一样了: View清楚自己是登录界面。用户点击登录后,它会把账号和密码传给 Controller 做校验,拿到结果后自主判断对错,校验失败就弹出提示。同时它还会主动校验输入内容,一旦发现账号或密码为空,立刻弹窗提醒。还有页面标题显示的是什么,View 也会主动问问 Controller 。


四、MVVM

流程:

用户操作 View → ViewModel处理 → Model更新 → ViewModel更新 → View自动刷新

数据驱动视图!自动同步!View ← 双向绑定 → ViewModel

和 MVP 中的 View 一样,MVVM 的 View 也完全不关心业务逻辑。用户产生操作时,View 仅将事件传递给 ViewModel,由 ViewModel 全权处理业务逻辑与数据加工。二者最大的不同在于,MVVM 额外增加了数据绑定机制:View 在初始化阶段就会和专属的 ViewModel 完成绑定,此后只要 ViewModel 内部数据发生变化,View 便会自动同步展示最新内容。

http://www.jsqmd.com/news/911419/

相关文章:

  • BERT Miniatures系列解析:为什么BERT uncased L-12 H-256 A-4适合资源受限环境
  • 终极Windows防撤回指南:微信QQ消息永久保存的简单解决方案
  • 如何解决终端开发效率瓶颈:终极WaveTerm自定义小部件指南
  • 在OpenClawAgent工作流中无缝接入Taotoken多模型
  • 行业首份Claude-3.5代码质量压测报告:10万行样本暴露的2个反直觉性能断层
  • 如何优化DistilBERT-base-cased推理速度:量化、剪枝与蒸馏进阶技巧
  • Arduino音频编程实战:从蜂鸣器驱动到旋律播放全解析
  • Irodori-TTS-500M-v2未来路线图:日语语音合成的下一步发展方向
  • 抖音视频批量采集助手:如何高效下载多用户视频内容
  • 告别手绘!用Unity Tilemap快速搭建2D像素风地图(附官方拓展包下载)
  • 不只是卸载失败:从银河麒麟V10这个Bug,聊聊Linux桌面环境下的软件包管理那些‘坑’
  • mT5-small-sum-de-mit-v1:德国电信开源的MIT许可证德语摘要模型全面解析
  • 基于LoRa与4G的物联网空气监测系统搭建指南
  • 【Lindy简历筛选自动化实战指南】:20年HR Tech专家亲授,3步搭建零代码筛选系统(附5个避坑清单)
  • Schrödinger Maestro实战:手把手教你用Phase模块构建高精度药效团模型(附富集分析避坑指南)
  • 解锁Wallpaper Engine宝藏:5分钟掌握RePKG资源提取神器
  • Speechless微博备份工具:5分钟快速导出PDF的终极指南
  • Mental-Health-FineTuned-Mistral-7B-Instruct-v0.2环境搭建教程:从安装到运行的完整步骤
  • 如何快速掌握Mem Reduct:面向新手的完整内存优化指南
  • 终极指南:Windows版微信QQ防撤回工具完整教程
  • 2026年深圳小程序开发外包公司靠谱公司一览,值得收藏 - 软件测评师
  • 从零打造Arduino手持游戏机:硬件设计、驱动原理与嵌入式开发实践
  • Abaqus显式分析结果怎么读?手把手教你用Matlab调用Python脚本提取ODB数据(避坑指南)
  • 实测OpenHuman:看完源码我才懂,它凭什么碾压市面上90%的AI Agent|开发者视角复盘
  • 逆向思维:从CryptoJS加密到Burp联动——实战解析前端自定义加密的爆破新思路
  • 解锁音乐自由:5分钟快速掌握Unlock Music音频解密全攻略
  • GEO贴牌代理需要满足的条件?有哪些功能? - GEO贴牌代理
  • GPT如何理解表情包情感?多模态评估与提示词工程实战
  • 如何轻松永久保存微信聊天记录:WeChatMsg完整使用指南
  • 2026年Q2苏州企业GEO服务商选型测评报告:谁才是AI搜索时代的真正领跑者? - 品牌推广大师