1、类别
DIP依赖倒置、IoC控制反转、DI依赖注入(Dependency Injection)
c++11 实现依赖注入
控制反转、依赖注入、依赖倒置傻傻分不清楚?
我曾想深入了解的:依赖倒置、控制反转、依赖注入
2、方法
-
step1:通过依赖倒置实现单向依赖
A依赖于B,胜过A/B互相依赖。 -
step2: 层次化 & 胶水层
A1,A2依赖于B,A1依赖于A2。重构为A1/A2依赖于B,A1/A2互不依赖,即分层。
A/B/C互相依赖,增加胶水层D,A/B/C依赖于D,D作为代理模块,A/B/C互不依赖。 -
step3: 依赖程度
标准消息接口(socket, netlink, ioctrl) > 私有消息(msgQ) > 函数调用(接口抽象程度) 》 数据共享(模块化大忌) -
step4:lib隐藏实现
A依赖于B,B提供lib和头文件。 -
step5: 函数接口设计原则
3、依赖关系
软件系统解耦:理解依赖关系
(1)尽量单向依赖与单一职责原则(SRP)
(2)双向依赖转换为单向依赖。TCP的收发加一个数据层。
(3)弱化双向依赖:回调与中间层