
本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身。
文章结尾有最新热度的文章,感兴趣的可以去看看。
文章有点长(1817字阅读时长:3分),期望您能坚持看完,并有所收获
大家好,今天我继续给大家分享干货。熟悉我的人,都知道我真正的干货一般在中间和末尾部分(文章中间部分:有项目文字和视频介绍)。请耐心看完!谢谢。您可以在文章末尾处获取完整的源代码文件。

打造健壮、可扩展且易于维护的软件,是每个开发者的梦想。然而,随着应用程序的复杂度不断攀升,它们常常变得错综复杂,要是想解开,一不小心就会全盘崩塌。这时候,架构就派上用场了。
通过分离关注点并划定清晰的边界,架构为我们提供了构建有序系统的蓝图。但在像C++这样细节繁多的语言里,要如何践行这些原则呢?
架构的核心,是创建一种系统,让业务逻辑不受框架、数据库或外部设备的影响。这种分离确保了代码具有适应性、可测试性,并且易于扩展。它的结构围绕着多个层次:

每个层次都有其独特的功能,并且它们之间以单向流动的方式进行通信,遵循依赖规则:代码依赖关系指向内部。
咱们举个具体的例子:图书馆管理系统。目标是高效管理图书、用户和借阅记录,同时让系统具有灵活性,以便日后能够轻松集成电子书功能或者推荐引擎等扩展。

这些类封装了基础数据和业务规则。这里没有框架依赖——纯粹是简洁的C++代码。
2. 第二步:设计用例
用例赋予实体生命。在我们的场景中,“借阅图书”这个用例可能长这样:

注意,用例层是与存储库进行通信,而不是直接与数据库交互。这种分离确保了逻辑不依赖于特定的数据库。
3. 第三步:实现接口适配层
这一层将存储库的数据转换为用例能够理解的格式。例如:

通过遵循接口(比如UserRepository),我们让各个层之间保持松散耦合。要是明天想更换数据库,完全没问题。
4. 第四步:在框架层将所有内容整合起来
最后,框架层让一切运转起来。这可以是你的主函数、REST API控制器,或者是图形用户界面(GUI)的事件处理器。下面是一个简单的示例:

在C++中采用架构,可不只是为了用结构整齐的代码给其他开发者留下好印象。而是为了打造经得起时间考验的软件。这意味着添加一个新功能,可能只需要几个小时,而不是几天。当你面临交付期限时,这可不是小事。
通过将应用程序分解为清晰、易于管理的层次,你不仅能开发出更好的软件,还能为自己省去无数麻烦。以上就是我的分享。这些分析皆源自我的个人经验,希望上面分享的这些东西对大家有帮助,感谢大家!
《Effective Modern C++》
《C++ Primer》
文章中源代码怎么获取:关注官方微信公众号,就可以获取。

最新热门文章推荐:
国外C++程序员分享:当OCR遇上C++和OpenCV,图像文本提取变多简单?
国外C语言程序员分享:我为何不再使用 printf(),你也该如此
程序员必备工具推荐:Carbon项目代码美化与分享的得力助手
国外技术大佬分享:优化MongoDB查询,数十亿条记录查询时间从250秒缩短到4秒
原文作者:讳疾忌医-note;如有侵权,请联系管理员删除。