依赖注入-服务访问客户端的私有成员

时间:2020-03-25 20:01:53

标签: c++ inheritance design-patterns dependency-injection

我有一个客户类A,它具有某种数据结构(m_data)。现在,我需要一个函数,该函数需要对数据执行一些操作。使用依赖项注入是一种好习惯,这样给定的服务将访问客户端类的m_data吗?

Note:还有更多服务,它们都在m_data上运行,我只是想避免继承。这样做的原因是,类A也是派生类,因此可能有其他类提供foo()功能,但没有m_data数据结构。

class B()
{
public:
    // constructor, destructor, ...
    void foo();
}

class Service()
{
public:
    // constructor, destructor, ...
    void foo(Data);
}

class A() : public Base
{
public:
    A(Service &_serv) :
        m_serv(_serv)
    {
        init_data();          // initializes m_data
    }

    void foo()
    {
        m_serv.foo(m_data)    // is this a good practice?
    }

private:
    Service m_serv;
    Data m_data;
}

我认为这是一个不好的做法,因此有人可以提供一些好的设计模式,还是其他解决方案?谢谢!

0 个答案:

没有答案
相关问题