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))