登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
依赖倒置 DIP、依赖注入 DI、控制反转 IoC 和工厂模式 ...
依赖倒置 DIP、依赖注入 DI、控制反转 IoC 和工厂模式
[ 复制链接 ]
瞧蛀
2025-6-4 20:35:22
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
1. 依赖倒置
依赖倒置原则(Dependency Inversion Principle, DIP)是 SOLID 原则中的一项,其
核心思想
是通过
抽象
解耦高层模块和低层模块,使
二者都依赖于抽象而非具体实现
。
依赖反转/倒置的体现
:传统依赖方向是高层模块直接调用低层模块,在源码级别上高层模块依赖低层细节模块。而 DIP 通过抽象反转这种依赖关系,使低层模块的实现在源码级别上依赖高层定义的抽象(
视为高层模块的一部分
)。
1.1 依赖倒置原则的核心
高层模块不直接依赖低层模块
,二者都应依赖抽象(接口或抽象类,接口由高层模块定义,视为高层模块的一部分)。
抽象不依赖细节
,细节(具体实现)应依赖抽象。
1.2 依赖倒置指导方针
变量不可以持有具体类的引用——改用工厂,
避免直接使用 new 持有具体类的引用(new 具体类的操作都封装到工厂中)
不要让类派生自具体类——派生自抽象类或接口,这样就不依赖具体类了
不要覆盖基类中已经实现的方法——如果这样,说明不是一个真正适合被继承的抽象
1.3 示例
场景
高层模块 ReportGenerator 需要生成报告,依赖数据获取功能。
低层模块 MySQLDatabase 和 SQLiteDatabase 提供具体的数据操作。
传统实现(未遵循 DIP)
[code]// 低层模块:直接依赖具体实现class MySQLDatabase {public: void connect() { /* MySQL 连接逻辑 */ } std::string fetchData() { return "MySQL 数据"; }};// 高层模块直接依赖低层具体类class ReportGenerator {private: MySQLDatabase db; // 直接依赖具体实现public: void generateReport() { db.connect(); auto data = db.fetchData(); std::cout
依赖
倒置
DIP
注入
DI
相关帖子
统一管理第三方包的依赖包版本号
DolphinScheduler依赖机制、Open-Falcon告警推送与监控的优化实践
难免的尴尬:代码依赖
koupleless demo依赖问题
ImageViewer.js:一个零依赖的现代化图片预览组件
fix-broken-img:零依赖的图片优雅降级解决方案
强的飞起的 Roslyn 编译时代码生成,实现抽象类继承与依赖注入的自动化配置
安装odoo18依赖报错command 'x86_64-linux-gnu-gcc'
咱们聊聊Spring循环依赖那点事儿:从“死锁”到“三级缓存”的奇妙之旅
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
统一管理第三方包的依赖包版本号
2
442
佴莘莘
2025-10-15
安全
DolphinScheduler依赖机制、Open-Falcon告警推送与监控的优化实践
2
865
司寇涵涵
2025-10-23
业界
难免的尴尬:代码依赖
2
131
怀陶宁
2025-10-31
安全
koupleless demo依赖问题
3
513
寅斫
2025-11-08
业界
ImageViewer.js:一个零依赖的现代化图片预览组件
3
450
笙芝
2025-11-22
业界
fix-broken-img:零依赖的图片优雅降级解决方案
0
302
乃阕饯
2025-11-30
业界
强的飞起的 Roslyn 编译时代码生成,实现抽象类继承与依赖注入的自动化配置
1
497
忿媚饱
2025-12-03
安全
安装odoo18依赖报错command 'x86_64-linux-gnu-gcc'
1
842
涣爹卮
2025-12-03
业界
咱们聊聊Spring循环依赖那点事儿:从“死锁”到“三级缓存”的奇妙之旅
0
687
赏听然
2025-12-14
回复
(3)
迫蔺
2025-10-14 22:31:18
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
热心回复!
郦湘云
2025-10-31 03:39:50
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
谢谢分享,试用一下
厥轧匠
5 天前
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
程序
科技
安全
签约作者
程序园优秀签约作者
发帖
瞧蛀
5 天前
关注
0
粉丝关注
14
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
kk14977
6845357
3934307807
991123
4
xiangqian
638210
5
韶又彤
9998
6
宋子
9983
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
311
《ESP32-S3使用指南—IDF版 V1.6》第五十五
941
纯前端调用大模型真的安全吗?我踩过的坑比
895
【分析式AI】-带你秒弄懂决策树与随机森林
97
DBLens 的数据安全、登录方式与离线使用说
71
国内开发者合规订阅 Claude Code 的 3 条最
153
Perforce QAC 2025.3 新版上线 | 速度与深
475
防止跨站脚本攻击(XSS)(完整版HTTP安全
352
Wayland下RDP服务器的搭建
887
Flink学习笔记:状态后端
532
csq-蓝桥杯python-基础语法2-列表与循环语
512
C#+VisionMaster 学习笔记(目录)-目录
586
ROS2核心概念之参数
88
【Agent】MemOS 源码笔记---(5)---记忆分类
129
.NET周刊【11月第4期 2025-11-23】
191
Oracle回滚与撤销(Undo)技术:从理论到实
223
吴恩达深度学习课程四:计算机视觉 第二周
854
jetson nano的ssh远程登录连接
638
Categraf 监控采集器常见问题汇总
825
11月和12月求职总结
950
2026年成都品牌主,如何选择AI优化搜索(AI