
软件开发框架
文章平均质量分 94
软件架构设计,C++ API设计,模块化设计,软件重用等
宁静致远2021
天道酬勤,持之以恒。
发上等愿,结中等缘,享下等福;
择高处立,寻平处住,向宽处行。
展开
-
C++单例模式--懒汉与饿汉以及线程安全
无论全局静态变量还是局部静态变量,都是执行动态初始化,也就是都得在代码真正执行时,原创 2025-04-06 22:03:51 · 711 阅读 · 0 评论 -
Qt 彻底搞懂 SUBDIRS 的作用
本文主要介绍 qmake 的SUBDIRS变量在多项目工程中的应用。当Qt项目规模比较小的时候,我们用一个工程就可以将所有源码文件组织起来,而不影响编译效率。但是随着项目规模的增加,只用一个工程组织所有的文件就不合适了,这时可以考虑将项目按照功能拆分成多个子工程,而SUBDIRS就是用来将多个子工程组织在一起的qmake变量。每个Qt工程文件中都有一个TEMPLATE变量,Qt通过该变量的值决定如何构建工程。TEMPLATE常用的类型有三种,见下表。原创 2024-11-04 12:02:17 · 965 阅读 · 0 评论 -
SDK设计心得之接口设计
嗯,感觉良好,然后有一天,有一个应用只接入第二个平台而不接入第一个平台,我们第一次懵逼了,但是当时偷懒了,没有根本解决这个问题,而是选择虽然不接入第一个平台,也去第一个平台配置这个字段~~~这就已经很傻了,还不赶紧改,第二波就来了,第一个平台忽然调整了那个配置字段,弃用了,换了新的字段来标示,同时值也变化了(他们做了兼容,可以同时支持新旧字段),但是第二个平台就瞬间跪了,只能二选一,用老的值,新版本有问题,用新的值,老版本有问题,瞬间煞笔了~~好吧,在举个实际的例子,发现所有的经验都是血泪史,要哭了啊。原创 2024-11-04 11:52:46 · 940 阅读 · 0 评论 -
Qt中的动态链接库编程(Q_DECL_IMPORT、Q_DECL_EXPORT)
生成Test项目,输出Test.exe。在IAnimal接口中,我们定义了三个纯虚函数Eat()、Run()和 Sleep(),表示吃、跑和睡眠的动作,这是抽象的,因为不同的动物有不同的吃相和睡眠姿态,而世间的动物何止千千万——无所谓,让这些具体动物的不同 表现交给IAnimal插件的编写者发挥吧——这就是接口的魅力,加上插件的思想,整个应用程序就变成开放的,可扩展的了!COM是一个很成功的例子,只要符合COM的规范,我们就能编写出很好的DLL来,然而COM是微软私生的,要想跨平台,我们还得另找它路。原创 2024-11-04 11:45:48 · 1199 阅读 · 0 评论 -
什么是C++模块化系统?C++20的模块化系统
C++20引入的模块化系统是一种新的代码组织和编译机制,它旨在替代传统的头文件机制,提供更好的代码组织、更快的编译速度和更强的封装性。通过减少冗余的头文件解析和宏定义传播,模块可以显著减少编译时间。模块提供了更好的封装,减少了不必要的依赖暴露。模块可以更清晰地表达模块间的依赖关系,提高代码的可维护性。C++20的模块化系统通过引入模块声明和导入,提供了一种替代传统头文件机制的现代化解决方案。模块化系统不仅减少了编译时间,增强了代码的封装性,还改善了代码的组织和可维护性。原创 2024-11-02 09:18:58 · 1260 阅读 · 0 评论 -
C++接口:构建模块化与可扩展的软件架构
在C++中,接口通常指的是一组纯虚函数,这些函数定义了一个类必须实现的行为。接口本身不提供任何实现,它的主要目的是定义一个契约,任何实现该接口的类都必须遵守这个契约。提供一种方式来定义类之间的协议。促进代码的模块化和解耦。支持多态,使得代码更加灵活和可扩展。原创 2024-11-02 09:09:53 · 760 阅读 · 0 评论