- 依赖注入和控制反转
控制反转可以说一种思想, 即把资源的控制权交给第三方来处理, 而依赖注入算是控制反转的一种实现。
依赖注入其实也是一种思想, 只不过更加具体一点。
先说依赖是如何产生的:
程序中存在两个类A & B, A中实现某些功能需要借助(依赖)B的实例去操作。当B类的初始化方式发生变化,比如构造函数增加了一个参数的时候, A中所有实例化B的代码都需要进行改动。 也就是说, 当需求发生变动(B类构造函数增加参数)时, A和B同时需要修改,这就是说A对B产生了强依赖, 或者说强耦合。
解决强依赖的方法就是依赖注入, 一般实现方式是把A中需要实例化B的代码全部去掉,改成由外部传入B实例方式。
详细例子
强依赖
class A {
void read() {
b = new B(ip,port)
b.read()
}
}
A *a = new A()
a.read()
`
依赖注入
```c++
class A {
B *b = null
__construct(B *pb) {
this.b = pb
}
void read() {
this.b.read()
}
}
B *b = new B(ip, port)
A *a = new A(b)
a. read()
`