Unity QFramework 简介

article/2025/8/21 12:55:51

目录

什么是MVC模式?

QFramework 架构提供了 Model 的概念

QFramework 架构引入 Command 的方式

QFramework 架构引入 Event事件机制

四个层:表现层、系统层、数据层、工具层

委托和回调函数的关系

命令和事件的区别

工具篇


QFramework整体基于MVC架构,实现了数据,操作,视图的解耦分层。在中间穿插了Command,Event,Architecture ,System这样的类作为扩展。表现层,数据层,系统层,

什么是MVC模式?

MVC(Model-View-Controller)框架通过​​数据、逻辑、交互的解耦​​,提升了代码的可维护性和扩展性。

在MVC架构中,​​交互逻辑​​和​​表现逻辑​​是数据与界面交互的两个核心流程,

交互逻辑,就是从用户输入开始到数据变更的逻辑 顺序是 View->Controller->Model

表现逻辑,就是数据变更到在界面显示的逻辑 顺序是 Model->Controller->View

View、Model 以及 Controller 的交互逻辑和表现逻辑形成了一个闭环。构成了完整的 MVC 闭环

MVC 可以结合多种设计模式

观察者模式(Model→View) + 命令模式(View→Controller) + 策略模式(Controller→Model)。

Model​​通过观察者模式通知​​View​​更新;

​Controller​​通过命令模式处理​​View​​的输入请求。

观察者模式用于模型和视图之间的通信,在模型数据变化时通知视图更新;

策略模式用于视图和控制器之间的解耦;

命令模式用于处理用户输入

QFramework 架构提供了 Model 的概念

Model 的引入是为了解决数据共享的问题 数据共享分两种:空间上的共享和时间上的共享。 空间的共享很简单,就是多个点的代码需要QFramework 架构提供了 Model 的概念访问 Model 里的数据。 时间上的共享就是存储功能,将上一次关闭 App 之前的数据存储到一个文件里,这次打开时获得上次关闭 App 之前的数据。 需要共享的数据放 Model 里,不需要共享的,能不放就不放。

QFramework 架构引入 Command 的方式

Controller 本身之所以臃肿,是因为,它负责了两种职责,即交互逻辑,表现逻辑

解决 Controller 臃肿用的是引入 Command 的方式,即引入命令模式,通过命令来分担 Controller 的交互逻辑的职责

通过引入 Command,帮助分担了 Controller 的交互逻辑。使得 Controller 成为一个薄薄的一层,在需要修改 Model 的时候,Controller 只要调用一句简单的 Command 即可。

QFramework 架构引入 Event事件机制

表现逻辑的代码目前看起来并不是很智能。 每次调用逻辑之后,表现逻辑部分都需要手动调用一次(UpdateView 方法)

在一个项目中,表现逻辑的调用次数,至少会和交互逻辑的调用次数一样多。因为只要修改了数据,对应地就要把数据的变化在界面上表现出来。 而这部分调用表现逻辑的代码也会很多,所以我们引入一个事件机制来解决这个问题。

事件机制的使用其实是和 Command 一起使用的,即通过 Command 修改数据,当数据发生修改后发送对应的数据变更事件,这个是简化版本的 CQRS 原则,读写分离原则

四个层:表现层、系统层、数据层、工具层

委托和回调函数的关系

命令和事件的区别

工具篇


http://www.hkcw.cn/article/qOAXWKBkFG.shtml

相关文章

非线性声学计算与强化学习融合框架:突破复杂环境人机交互的新技术

随着人工智能的快速发展,尤其是在深度学习和强化学习领域,声学计算和人机交互进入前所未有的扩展和创新阶段。尽管传统声学方法取得了显著成功,但这些线性或准线性方法在实际环境中往往存在关键的不足,尤其在动态、复杂或混响环境…

广东河源再发3.0级地震 近期无大震风险

广东河源再发3.0级地震 近期无大震风险!中国地震台网正式测定,5月30日2时21分在广东河源市源城区(北纬23.72度,东经114.68度)发生3.0级地震,震源深度10千米。河源市地震局表示,目前未收到人员伤亡和财产损失报告。该局会商研判认为,本次地震是前一天5月29日13时17分发生…

极致视频压缩日记 - 1.2GB=>200MB - 低码率高画质 - 批量多目录自动转换脚本

效果图 格式av10.3M的码率,跟格式h.2645M的码率,画质竟然差不多! GPU拉满全速编码! 目标 1.视频瘦身储存,画质不变 2.自动批量压缩视频,多层目录递归处理 (脚本https://www.amjun.com/2327.html) 3.免费 (…

媒体:升学不再只有“独木桥” 职教贯通培养拓宽道路

媒体:升学不再只有“独木桥” 职教贯通培养拓宽道路!随着职教贯通培养模式的不断推进,我国学生的升学选择已经更加多元。高考不再是唯一的出路。5月28日,教育部公布2025年全国高考报名人数为1335万人,比2024年的1342万人减少7万人。这是自2017年以来高考报名人数首次减少。…

多地曝“谷子店”闭店消息 “谷子经济”面临转型挑战

手办模玩生产车间里,年轻人正在参与“谷子”涂装工作。消费者正在挑选“谷子”。“谷子经济”还能像过去那样“丰收”吗?挣“二次元”的钱,难不难?不只是做单一的“谷子”销售,还自主开发产品,做IP代运营,一步一步介入“谷子经济”全链条。自己开发App,为平台用户建立“…

我国入境游出境游持续升温 双向奔赴激发市场活力

走进2025上海国际旅游交易博览会现场,可以感受到入境和出境旅游市场的繁荣。中外客商、展商根据满满的时间表,听宣讲、看项目、谈合作,为世界旅游市场注入动力。今年的上海国际旅游交易博览会于5月27日至29日举行,吸引了来自全球80多个国家和地区的700多家展商参展,展会规…

白宫称美国法院“叫停”关税是司法越权

美国联邦巡回上诉法院当地时间29日批准特朗普政府的请求,暂时中止美国国际贸易法院此前做出的禁止执行特朗普政府对多国加征关税措施的行政令的裁决。自美国国际贸易法院28日裁定禁止执行美政府多个关税行政令后,特朗普政府多名官员就指责这一裁决,提起了上诉。△白宫新闻秘…

运镜决定节奏:AI视频创作中的动态叙事法则

在AI视频创作工具日益普及的今天,如何通过镜头语言精准掌控节奏,成为创作者的核心竞争力。运镜——即镜头的移动方式(如推、拉、摇、移)与视角选择(如仰拍、俯拍、主观视角)——不仅是技术操作,…

【Redis】string

String 字符串 字符串类型是 Redis 最基础的数据类型,关于字符串需要特别注意: 首先 Redis 中所有的键的类型都是字符串类型,而且其他几种数据结构也都是在字符串的基础上构建的。字符串类型的值实际可以是字符串,包含一般格式的…

Java 文件操作 和 IO(3)-- Java文件内容操作(1)-- 字节流操作

Java 文件操作 和 IO(3)-- Java文件内容操作(1)-- 字节流操作 文章目录 Java 文件操作 和 IO(3)-- Java文件内容操作(1)-- 字节流操作观前提醒:1. Java中操作文件的简单介…

MySQL进阶篇(存储引擎、索引、视图、SQL性能优化、存储过程、触发器、锁)

MySQL进阶篇 存储引擎篇MySQL体系结构存储引擎简介常用存储引擎简介存储引擎的选择 索引篇索引简介索引结构(1)BTree索引(2)hash索引 索引分类索引语法SQL性能分析指标(1)SQL执行频率(2)慢查询日志(3)profile详情(4)explain或desc执行计划 索引使用引起索引的失效行为SQL提示覆…

造血干细胞移植中,选择合适供者需综合多因素考量

KIR 单体型即杀伤细胞免疫球蛋白样受体(KIR)单体型,是指 KIR 基因在染色体上特定的组合形式 。主要内容如下: 分类 着丝粒单体型(C 型):含有较多的抑制性 KIR 基因,这些基因编码的…

四.MySQL数据类型

数据类型分类 一.数值类型 1.tinyint类型 MySQL 整数类型范围(有符号 / 无符号) 类型字节最小值(有符号/无符号)最大值(有符号/无符号)TINYINT1-128 / 0127 / 255SMALLINT2-32,768 / 032,767 / 65,535ME…

深度解构:Profinet转Profibus网关如何重塑产品分离装置的控制逻辑

PROFINET是一种基于以太网的工业以太网通讯协议,而PROFIBUS则是一种国际化的现场总线标准。在很多工业生产环境中,这两种通讯方式都有其各自的应用场合和优势。当产品分离装置需要同时使用PROFINET和PROFIBUS进行通信时,无锡耐特森PROFINET转…

EasyVoice:开源的文本转语音工具,让文字“开口说话“

名人说:博观而约取,厚积而薄发。——苏轼《稼说送张琥》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、EasyVoice是什么?1. 核心特性一览2. 技术架构概览 二、安装部署指南…

外航飞机疑盲降国内在建跑道 机组认错跑道复飞

5月28日,有网友发帖称,一架外国航空公司的飞机在降落西安咸阳国际机场时发生意外状况,疑似盲降正在建设中的跑道,接地后复飞。该事件引发网友关注。据网友所述,该飞机在准备降落时,地面指令让落23L(南一跑道),结果落向24L(正在建的南二跑道),然后指挥复飞了,最后落…

[Redis] Redis:高性能内存数据库与分布式架构设计

标题:[Redis] 浅谈分布式系统 水墨不写bug 文章目录 一、什么是Redis?一、核心定位二、核心优势三、典型应用场景四、Redis vs 传统数据库 二、架构选择与设计1、单机架构(应用程序 数据库服务器)2、应用程序和数据库服务器分离3…

论坛项目测试报告

一、项目背景 1.1 测试目标 验证论坛功能完整性,确保用户个人中心、发布/删除管理、模块分类控制、搜索功能等核心模块 符合需求。 1.2 项目技术栈 后端:Spring Boot/Spring MVC 数据库:MySQL 前端:原生 HTML/CSS/AJAX 二、…

(LeetCode 每日一题)3373. 连接两棵树后最大目标节点数目 II(贪心+深度优先搜索dfs)

题目:3373. 连接两棵树后最大目标节点数目 II 思路:贪心深度优先搜索dfs,时间复杂度0(nm)。 第二棵树:对每个节点进行分类,0或1,相邻的节点肯定不同啦,这样就可以统计出0和1 各自的节点个数。 …

开疆智能Profinet转Profibus网关连接EC-CM-P1 PROFIBUS DP从站通讯模块配置案例

本案例是通过开疆智能Profibus转Profinet网关将正弦研发的Profibus从站模块连接的EM600变频器接入到西门子1200PLC的配置案例。 配置过程 1. 打开网关配置软件“”新建项目并添加模块PN2DPM并设置参数 2. 设置网关的Profibus参数。如站地址,波特率等。(…