依赖注入C

前端之家收集整理的这篇文章主要介绍了依赖注入C前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这也是我在MiškoHevery的 google talks的一个评论中提到的一个问题,即处理依赖注入,但它被埋在评论中。

我不知道如何将依赖关系连接在一起的工厂/制造商步骤可以在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;
    }
};

现在,如果有一个依赖关系比我们注入它的对象的生命周期还要长(说ClassC是那个依赖),我明白我们应该把build方法改成如下:

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

你最喜欢的方法是什么?

这个讨论是关于Java和依赖注入。

在C中,我们尽量不要传递RAW指针。这是因为RAW指针没有与之关联的所有权语义。如果您没有所有权,那么我们不知道谁负责清理对象。

我发现大多数时间依赖注入是通过C中的引用完成的。
在极少数情况下,您必须使用指针,根据您想要管理所有权的方式将其包装在std::unique_ptr<>std::shared_ptr<>中。
如果您无法使用C 11功能,请使用std :: auto_ptr<>或boost :: shared_ptr<>。

我还会指出,C和Java的编程风格现在如此分歧,将一种语言的风格应用于另一种语言将不可避免地导致灾难。

猜你在找的设计模式相关文章