C++中的依赖注入
C++中的依赖注入
在C++中实现依赖注入,可以通过以下方式:
-
工厂模式:创建一个工厂类来创建依赖对象。
-
构造函数注入:通过类的构造函数传入依赖。
-
设值注入:通过设置器(setter)方法传入依赖。
下面是使用工厂模式和构造函数注入实现的一个简单例子:
#include <iostream>
#include <memory>
// 接口
class IDependency {
public:
virtual void Operation() = 0;
virtual ~IDependency() = default;
};
// 实现
class DependencyImpl : public IDependency {
public:
void Operation() override {
std::cout << "Dependency operation." << std::endl;
}
};
// 工厂
class DependencyFactory {
public:
static std::shared_ptr<IDependency> Create() {
return std::make_shared<DependencyImpl>();
}
};
// 使用依赖的类
class MyClass {
private:
std::shared_ptr<IDependency> dependency_;
public:
// 构造函数注入
MyClass(std::shared_ptr<IDependency> dependency) : dependency_(dependency) {}
void Run() {
dependency_->Operation();
}
};
int main() {
// 创建依赖
std::shared_ptr<IDependency> dependency = DependencyFactory::Create();
// 创建使用依赖的类
MyClass myClass(dependency);
// 运行
myClass.Run();
return 0;
}
这个例子中,IDependency
是一个接口,DependencyImpl
是它的一个实现,DependencyFactory
是一个简单的工厂类用来创建依赖对象。MyClass
通过构造函数接收一个指向IDependency
的智能指针作为依赖注入。在main
函数中,我们通过工厂创建了IDependency
的实例,并将其注入到MyClass
实例中,然后调用Run
方法,该方法依赖于注入的IDependency
实现。