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

[软件开发技术栈]从MVVM到MVC

今天继续研究了软件的框架,与GPT老师进行了促膝长谈,研究了MVVM框架,它具体是这样介绍的:

1. Model(数据层)

Model 主要负责数据的处理和存储,它独立于视图和界面还有训练控制。Model 层的主要职责是:
  • 处理来自传感器的实时数据(如心率、血氧、肌电等)。
  • 提供对数据的访问接口(如读取、更新数据)。
  • 提供与训练相关的 核心数据
在这个框架中,PhysiologyModel 类是其中一个关键组件,它用于接收传感器数据,处理并存储这些数据,供其他层次使用。
  • 核心功能
    • 接收数据并更新。
    • 通过信号(如 heartRateChanged)向上层发出数据变化通知。

2. ViewModel(视图模型层)

ViewModel 是视图和模型之间的桥梁,它负责从 Model 层获取数据,并将其转化为可以直接用于 UI 的形式,同时也接收来自 View 的用户输入(如按钮点击),并传递给模型或训练管理器。
在这个架构中,TrainingViewModel 是视图模型类,它负责:
  • 提供训练状态信息(如正在训练、暂停、停止等)。
  • ViewTrainingManager 进行绑定,传递用户输入的命令(如开始训练、暂停训练等)。
  • 核心功能
    • 映射视图和数据之间的交互。
    • 提供 Q_INVOKABLE 方法供 QML 调用(例如 startTraining, stopTraining)。
  • 从 Model 中获取复杂的需要显示在上位机上的数据(例如,实时生理数据、传感器的状态等)。
  • 将这些数据转换成适合 QML 控件显示的格式。比如,Model 可能存储的是原始的数值数据,而 ViewModel 会将其转化为图表的坐标、阈值的设置等。
  • 处理 View 的命令或事件,提供给 Model 执行相应的操作。

3. View(视图层)

View 层是用户与程序的交互界面。在这个架构中,View 是用 QML 来实现的,它显示了用户界面元素,如按钮、标签、进度条等,并通过 ViewModel 获取数据更新和用户命令的响应。
  • 核心功能
    • 显示数据(如心率、训练状态)。
    • 响应用户的操作(如点击按钮)。
    • 通过 ViewModel 发送命令或请求数据更新。

也就是说没有单元模块处理算法逻辑的,后经过了解牵扯到另外一个框架即:MVC

MVC(Model-View-Controller)框架概述

  • Model:负责存储和管理数据,处理所有的业务逻辑。它是数据的核心,直接与数据库、网络接口或其他数据源交互。

  • View:负责显示用户界面,展示数据(通常由 Model 提供)。它只关注界面的布局和用户交互,不处理数据的业务逻辑。

  • Controller:作为 ModelView 之间的中介,负责处理用户输入并调用 Model 中的方法来更新数据或改变状态。它还可能根据 Model 中的数据更新 View

也就是需要在MVVM框架的基础之上需要添加一个C(control模块,需要将model指针作为参量)

完结,撒花

http://www.xdnf.cn/news/18353.html

相关文章:

  • 机器学习5
  • Linux入门DAY29
  • (19)python复杂度计算:在线AI(时间复杂)和本地工具(圈复杂度)
  • 什么是Qoder?如何下载?如何体验?Qoder和其他 AI IDE 什么区别?
  • 7.Shell脚本修炼手册---awk基础入门版
  • NewsNow搭建喂饭级教程
  • Java实战:深度解析SQL中的表与字段信息(支持子查询、连接查询)
  • 【Java后端】Spring Boot 实现请求设备来源统计与UA解析全攻略
  • 今天,字节开源Seed-OSS-36B模型,512k上下文
  • OpenHarmony之 蓝牙子系统全栈剖析:从协议栈到芯片适配的端到端实践(大合集)
  • Django中的MVC和MVT模式
  • mac电脑使用(windows转Mac用户)
  • 【个人网络整理】NOIP / 省选 /NOI 知识点汇总
  • 哈希:最长连续序列
  • BGP高级特性
  • 通信工程学习:什么是Template Matching模版匹配
  • 利用 Java 爬虫获取淘宝商品评论实战指南
  • 谈谈架构的内容
  • Linux 802.11协议栈深度分析与实践指南
  • 如何在日常开发中高效使用 Copilot
  • 算法训练营day58 图论⑧ 拓扑排序精讲、dijkstra(朴素版)精讲
  • Wireshark数据包波形绘制异常
  • 【Docker】在Ubuntu22.04上安装Docker
  • 药品追溯码(溯源码)采集系统(二):门诊发药后端
  • ZeroNews构建企业级安全网络架构
  • C++高频知识点(三十四)
  • 【领码课堂】让Java数据检索更智能——Bean Searcher全景解读
  • 广东省省考备考(第八十三天8.21)——言语、判断推理(强化训练)
  • 【Protues仿真】基于AT89C52单片机的舵机和直流电机控制
  • 无人机高科技,翱翔未来新天地