其他分享
首页 > 其他分享> > 在C中使用接口进行依赖项注入

在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