在C中使用接口进行依赖项注入
作者:互联网
假设我有以下抽象类,并将其用作C中的“接口”:
class IDemo
{
public:
virtual ~IDemo() {}
virtual void Start() = 0;
};
class MyDemo : IDemo
{
public:
virtual void start()
{
//do stuff
}
};
然后在需要接口接口的类中(通过注入的具体类):
class Project
{
public:
Project(IDemo demo);
private:
IDemo *_demo;
};
我的意图是通过Project的构造函数分配具体的Demo类.由于无法实例化IDemo,因此无法编译此代码.有什么建议么?
提前致谢.
解决方法:
尝试:
Project::Project(IDemo* demo)
: _demo(demo)
{}
但是,如果演示对象在项目的整个生命周期中都不会改变,那么我更愿意通过引用传递:
class Project
{
public:
Project(IDemo& d)
: demo(d)
{}
private:
IDemo& demo;
};
然后像这样使用它:
int main()
{
MyDemo demo;
Project project(demo);
}
标签:c,interface,abstract-class,dependency-injection 来源: https://codeday.me/bug/20191012/1897331.html