Dependency Injection - сервис доступа к приватным членам клиента - PullRequest
0 голосов
/ 25 марта 2020

У меня есть клиентский класс 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;
}

Я полагаю, что это плохая практика, поэтому кто-то может предоставить хорошие шаблоны проектирования или какие-либо другие решения? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...