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