Qt5.9/C++项目开发架构理论
https://blog.csdn.net/naibozhuan3744/article/details/82383683
最近博主单独负责一个比较大的项目,发现以前那种所有UI界面和功能逻辑全部写在一起的用法很混乱,不利于团队开发和产品迭代。于是,博主最终开始接触架构了,开始知道UI界面和业务逻辑需要尽可能的分离。
判断一个结构的解耦程度,一个简单的办法是离开了UI界面,业务逻辑是否可以正常调用和运行,如果可以,说明这个架构是比较成功的。同时,对UI界面和业务逻辑功能的每个模块,是否能够被替换,而不影响整个项目的功能,这点也是判断架构解耦性的一个指标。
博主的项目主要是用C/C++语言进行开发,用的界面库是Qt5.9.4,下面是博主对C++架构的初步认知和理解。
1.1架构有很多,但是用在C/C++后端集成管理项目上的架构,常用的是MVC,这也是主流的架构。所以博主重点学习和参考的也是MVC架构。下面是MVC架构的知识点讲解。
https://www.cnblogs.com/9A91/p/4241027.html(MVC初级理解)
https://blog.csdn.net/zch501157081/article/details/51967549(MVC深入理解)
https://blog.csdn.net/u012521552/article/details/51771318(Qt的MVC详解,重点参考)
https://blog.csdn.net/u012521552/article/details/51771318(Qt的MVC(MVD))
1.2思考总结
可以参考Qt的MVD模式,将UI界面和业务逻辑层完全分离开来,两者的链接用信号与槽机制。然后每个业务逻辑按照功能划分,封装成一个单独的函数或者类。
UI界面层(view)——>控制器层:当用户操作UI界面时,发射一个控制器层信号;
控制器层(controller)——>模型层:控制层调用模型层功能函数,实现对应业务逻辑功能;
模型层(model)——>控制器层:模型功能层,完成业务逻辑后,再发射一个控制器层信号,声明完成了该业务逻辑功能。
控制器层(controller)——>UI界面层:控制器层接收到该支线程完成了对应的业务逻辑,开启槽函数结束该支线程,然后发射一个控制器层完成业务逻辑信号到UI界面层。UI界面层收到信号,显示对应的结果UI界面。
注意:整个过程控制器有三个关键信号,启动业务逻辑功能信号,退出该业务逻辑线程信号,完成业务逻辑信号。而model层功能函数是用支线程来执行。也就是说,所有的模型功能函数都是用支线程完成,这样可以保证UI界面的流畅度。
参考内容:
https://www.cnblogs.com/9A91/p/4241027.html(MVC初级理解)
https://blog.csdn.net/zch501157081/article/details/51967549(MVC深入理解)
https://blog.csdn.net/u012521552/article/details/51771318(Qt的MVC详解,重点参考)
https://blog.csdn.net/u012521552/article/details/51771318(Qt的MVC(MVD))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」