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

Unity QFramework 简介

目录

什么是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 原则,读写分离原则

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

委托和回调函数的关系

命令和事件的区别

工具篇

相关文章:

  • Git 教程 | 如何将指定文件夹回滚到上一次或某次提交状态(命令详解)
  • 基于多尺度卷积和扩张卷积-LSTM的多变量时间序列预测
  • Orcad 修复Pin Name重复问题
  • MonoPCC:用于内窥镜图像单目深度估计的光度不变循环约束|文献速递-深度学习医疗AI最新文献
  • 5.3.1_2二叉树的层次遍历
  • Relooking:损失权重λ 、梯度权重α、学习率η
  • http传输协议的加密
  • 【C/C++】线程安全初始化:std::call_once详解
  • VoltAgent 是一个开源 TypeScript 框架,用于构建和编排 AI 代理
  • 【题解-洛谷】B4278 [蓝桥杯青少年组国赛 2023] 简单算术题
  • Java 注解与反射(超详细!!!)
  • React从基础入门到高级实战:React 生态与工具 - React 国际化(i18n)
  • Mac系统下,利用wget批量下载ICESat-2测高内陆水位高数据ALT13
  • SpringBoot整合RocketMQ--实例
  • RTX腾讯通停服后,有哪些兼容Linux及移动端的升级途径?
  • SQL(Database Modifications)
  • 杏仁海棠花饼的学习日记第十四天CSS
  • Windows 11 全角半角切换方法
  • 《仿盒马》app开发技术分享-- 订单列表页(端云一体)
  • 日常--OBS+mediamtx实现本地RTMP推流环境搭建(详细图文)
  • 哪个网站专门做代购/鸡西网站seo
  • 住房建设城乡网站/邯郸seo优化
  • 合肥有多少做网站的/用广州seo推广获精准访问量
  • 寿光网站建设多少钱/百度动态排名软件
  • 企业门户网站运营推广/生意参谋指数在线转换
  • 为公司做网站要做什么准备/重庆百度推广优化