c ++依赖注入和更复杂的结构

时间:2017-07-25 20:41:42

标签: c++ object vector dependency-injection instantiation

我试图理解DI和对象构造及其逻辑的分离,但在某些情况下我的实现存在问题。这是一个例子。

class A
{
public:
    void load_bs(); // create some Bs and push them into bs_ vector
                    // and call load_cs on every created B
private:
    std::vector<B> bs_;
};

class B // does not need A reference for real work
{
public:
    void load_cs(); // create some Cs and push them into cs_ vector
private:
    std::vector<C> cs_;
};

class C // needs A and B
{
public:
    C(A &a, B &b) : a_(a), b_(b) {}

private:
    A &a_;
    B &b_;
};

如何根据DI构建此结构?首先我创建A类的实例,然后调用load_bs()方法并创建一些B对象,所以现在是时候在B实例中创建C对象了。因为我应该只向对象注入该对象所需的依赖关系,不仅要传递给另一个对象使用,在C创建过程中我在B中引用A?是否应该在其他地方创建C并传入B?

当我注入依赖项时,只注入其他东西,我得到的是真正的硬重构,当应该删除其中一个依赖项时,或者当我想在对象中添加一个真正高层次的对象时可用。

0 个答案:

没有答案