我有一个客户类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;
}
我认为这是一个不好的做法,因此有人可以提供一些好的设计模式,还是其他解决方案?谢谢!