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

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

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

委托和回调函数的关系

命令和事件的区别

工具篇

http://www.lryc.cn/news/2394945.html

相关文章:

  • C++ 日志系统实战第五步:日志器的设计
  • @Docker Compose部署Alertmanager
  • 前端面试准备-3
  • 性能测试-jmeter实战1
  • 汽车高速通信的EMC挑战
  • [SC]SystemC在CPU/GPU验证中的应用(五)
  • [蓝桥杯C++ 2024 国 B ] 立定跳远(二分)
  • 现代网络安全攻防技术与发展现状
  • 杏仁海棠花饼的学习日记第十四天CSS
  • ESP8266远程控制:实现网络通信与设备控制
  • RabbitMQ监控:关键技术、技巧与最佳实践
  • 【机器学习基础】机器学习入门核心算法:隐马尔可夫模型 (HMM)
  • zookeeper 操作总结
  • golang 实现基于redis的并行流量控制(计数锁)
  • Leetcode 2819. 购买巧克力后的最小相对损失
  • AI炼丹日志-25 - OpenAI 开源的编码助手 Codex 上手指南
  • AnyConv OGG 转换器:轻松转换音频格式
  • C# 类和继承(使用基类的引用)
  • 进程间通信(消息队列)
  • Linux gron 命令使用详解
  • Nginx--手写脚本压缩和切分日志(也适用于docker)
  • OpenCv高阶(十八)——dlib人脸检测与识别
  • 中山大学无人机具身导航新突破!FlightGPT:迈向通用性和可解释性的无人机视觉语言导航
  • WIN11+CUDA11.8+VS2019配置BundleFusion
  • WPF prism
  • 实时同步缓存,与阶段性同步缓存——补充理解《补充》
  • [Redis] Redis:高性能内存数据库与分布式架构设计
  • Mobaxterm解锁Docker
  • React 第四十九节 Router中useNavigation的具体使用详解及注意事项
  • 【JavaEE】Spring事务