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

[软件开发技术栈]从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.dtcms.com/a/342749.html

相关文章:

  • 大模型提示词工程背后的原理:深入理解Prompt Learning(提示学习)
  • 【Dify(v1.x) 核心源码深入解析】prompt 模块
  • 单智能体篇:Prompt工程艺术
  • 【运维进阶】Shell 函数的知识与实践
  • CTFSHOW | 其他篇题解(一)web396-web416
  • 学习日志39 python
  • 华为iVS1800接入SVMSPro平台
  • Web3 的发展挑战:技术、监管与生态的多重困境
  • 使用C++11改进工厂方法模式:支持运行时配置的增强实现
  • 【Ansible】将文件部署到受管主机1:文件模块
  • Autoware Universe 感知详解 | 第二节 宏观认识Autoware Universe感知模块整体架构
  • C++中的内存管理(二)
  • 第四章:大模型(LLM)】07.Prompt工程-(6)受限生成和引导生成
  • 机械试验台功能量具平台:铸铁工装平台
  • 阿里云对象存储OSS之间进行数据转移教程
  • 小迪安全v2023学习笔记(六十八讲)—— Java安全原生反序列化SpringBoot攻防
  • iOS沙盒机制
  • 【系统信息相关】datecal命令
  • React + Antd+TS 动态表单容器组件技术解析与实现
  • (栈)Leetcode155最小栈+739每日温度
  • Python爬虫实战:研究puzzle,构建谜题类数据采集分析系统
  • 编程语言与存储过程:业务处理的速度与取舍
  • 3ds Max 渲染动画总模糊?
  • 基于stm32的智能建筑能源管理系统/基于单片机的能源管理系统
  • 【Java SE】认识数组
  • 【Protues仿真】基于AT89C52单片机的舵机和直流电机控制
  • 【新启航】3D 扫描逆向抄数全流程工具与技能:从手持设备到 CAD 建模的 10 项核心配置解析
  • windows10安装playwright
  • Workerman在线客服系统源码独立部署
  • 笔记本电脑Windows+Ubuntu 双系统,Ubuntu无法挂载Windows的硬盘 报错问题解决