依赖注入
介绍
依赖注入(Dependency Injection)是一种软件设计模式,用于实现对象之间的解耦和提高代码的可测试性、可维护性。
在依赖注入中,一个对象所依赖的其他对象(通常称为依赖)不是由该对象自己创建或获取,而是通过外部将这些依赖提供给它。
使用
1.实现方法
简单来说,就是创建一个对象,然后把这个当做实参传入到另一个类的构造函数也好、普通函数也好,只要能传进入就行。
然后待注入的类里面声明一个注入类的对象。
2.实现
#include <iostream>
class B {
public:
int value;
void doSomething() {
std::cout << "B is doing something with value: " << value << std::endl;
}
};
class A {
private:
B* b;
public:
// 构造函数注入
A(B* b) {
this->b = b;
}
void performTask() {
b->doSomething();
}
~A() {
// 这里不需要释放 B 的内存,因为 B 的所有权不在 A 中
}
};
int main() {
B b; // 直接创建 B 对象,不涉及动态内存分配
b.value = 42;
A a(&b); // 将 B 对象的地址注入到 A 中
a.performTask();
return 0;
}
这种方法是用引用的方式,不涉及new内存,如果在main里面创建的b是指针的话也是可以的,不过需要delete这个指针。
当然,除了这种构造函数注入之外,还可以使用普通函数进行注入。
需要注意这里:在A类里面创建了一个:B* b;这个是声明而不是定义,因为没有分配内存。