news 2026/5/12 23:13:45

软件设计原则之DIP依赖倒置原则

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
软件设计原则之DIP依赖倒置原则

(DIP) 依赖倒置原则 Dependency Inversion Principle

核心原则

抽象不应该依赖细节;细节应该依赖于抽象。

场景描述

在一个应用程序 Application 中需要使用到数据库,比如我们此时需要使用到 Mysql 数据库。

Mysql 数据库分别具有连接,断开关闭,执行 sql 语句等操作。因此基于单一职责原则可以单独封装起来。

#include <string> class MySql { public: void connect_mysql() { } void execute_mysqlSQL(const std::string& sentence) { } void close_mysql() { } }; class Application { private: MySql* m_sqlPtr = nullptr; public: Application(MySql* sqlPtr) { m_sqlPtr = sqlPtr; m_sqlPtr->connect_mysql(); } ~Application() { m_sqlPtr->close_mysql(); delete m_sqlPtr; } void exec_sql(const std::string& sentence) { m_sqlPtr->execute_mysqlSQL(sentence); } }; int main() { Application app(new MySql{}); }

问题暴露

随着程序的开发和团队的各种决策问题,此时有可能需要更换数据库,如从 Mysql 数据库换成 Sqlite 数据库。

无脑的开发者容易直接重新写一个 Sqlite 类,并将 Application 中原先使用 Mysql 的地方全部替换。这显然是很低级的操作。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/12 23:09:59

InSAR数据处理第一步:如何高效获取Sentinel-1、精密轨道和12.5米DEM数据?

InSAR数据处理实战&#xff1a;高效获取Sentinel-1影像、精密轨道与DEM数据的进阶策略 当处理大型InSAR监测项目时&#xff0c;数据获取往往成为制约效率的首要瓶颈。传统手动下载方式不仅耗时费力&#xff0c;更难以应对多时相、大区域的数据管理需求。本文将分享一套经过实战…

作者头像 李华
网站建设 2026/5/12 23:05:25

taotoken控制台提供的api调用审计与用量分析功能体验

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 taotoken控制台提供的api调用审计与用量分析功能体验 对于需要统一管理多个大模型API调用的团队而言&#xff0c;清晰掌握调用情况…

作者头像 李华
网站建设 2026/5/12 23:05:17

CMS三十年:从“手工建站”到“智能基座”

一个从业者的观察与思考不知不觉&#xff0c;跟CMS打交道已经十几年了。从早期的织梦、帝国&#xff0c;到后来的WordPress&#xff0c;再到现在的各类无头CMS和低代码平台&#xff0c;这个领域的变化比想象中要快得多。写这篇文章&#xff0c;算是对CMS发展历程的一次梳理&…

作者头像 李华
网站建设 2026/5/12 23:05:07

BWTA技术解析:二值化Transformer的算法-硬件协同设计

1. BWTA&#xff1a;算法-硬件协同设计的二值化Transformer解析 在深度学习模型部署的实际场景中&#xff0c;我们常常面临一个核心矛盾&#xff1a;模型精度与推理效率的权衡。以BERT和GPT为代表的大规模Transformer模型虽然在各类任务中表现出色&#xff0c;但其庞大的参数量…

作者头像 李华