У меня есть клиентский класс 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;
}
Я полагаю, что это плохая практика, поэтому кто-то может предоставить хорошие шаблоны проектирования или какие-либо другие решения? Спасибо!