相关疑难解决方法(0)

C++中的依赖注入

这也是我在MiškoHevery 关于依赖注入处理谷歌会谈的评论中提出的一个问题,但它已被埋没在评论中.

我想知道将依赖关系连接在一起的工厂/构建器步骤如何才能在C++中工作.

即我们有一个依赖于B的A类.构建器将在堆中分配B,在A的构造函数中传递指向B的指针,同时在堆中分配并返回指向A的指针.

谁事后清理?建造者在完成后清理它是否好?它似乎是正确的方法,因为在谈话中它说构建器应该设置预期具有相同生命周期的对象,或者至少依赖关系具有更长的生命周期(我也有一个问题).我在代码中的意思是:

class builder {
public:
    builder() :
        m_ClassA(NULL),m_ClassB(NULL) {
    }
    ~builder() {
        if (m_ClassB) {
            delete m_ClassB;
        }
        if (m_ClassA) {
            delete m_ClassA;
        }
    }
    ClassA *build() {
        m_ClassB = new class B;
        m_ClassA = new class A(m_ClassB);
        return m_ClassA;
    }
};
Run Code Online (Sandbox Code Playgroud)

现在,如果有一个依赖项预计持续时间超过我们注入的对象的生命周期(比如ClassC就是依赖项)我明白我们应该将构建方法改为:

ClassA *builder::build(ClassC *classC) {
    m_ClassB = new class B;
    m_ClassA = new class A(m_ClassB, classC);
    return m_ClassA;
}
Run Code Online (Sandbox Code Playgroud)

你最喜欢的方法是什么?

c++ unit-testing dependency-injection

24
推荐指数
3
解决办法
2万
查看次数

标签 统计

c++ ×1

dependency-injection ×1

unit-testing ×1