Может ли передача объектов в качестве параметра метода называться «внедрение зависимостей»? - PullRequest
0 голосов
/ 10 июля 2019

Пожалуйста, помогите мне с этим основным вопросом ООП.Вот пример кода:

class A
{
    public function foo(SomeClass $someClass) {
        return $someClass->bar();
    }
}

Передача $someclass в качестве параметра функции является инъекцией зависимости или нет?И почему это так.

Считайте это вопросом для интервью.Что касается меня, SomeClass - это зависимость класса A, и она внедряется в метод, поэтому она должна быть Dependency Injection.Но я не нашел никаких доказательств, подтверждающих мое мнение.

Я проверил Что такое внедрение зависимостей? и есть только примеры внедрения конструкторов и сеттеров, мой пример другой.

1 Ответ

0 голосов
/ 11 июля 2019

В самом наивном смысле слова «передача зависимости единице работы», то да, это внедрение зависимости.

В более широком смысле «передача зависимостей, необходимых для единицы работы для достижения своей ответственности», не совсем.

Целью внедрения зависимостей является, в конечном счете, написание более чистого кода, который легче рассуждать, поддерживать, тестировать и развивать. Чтобы сделать это, мы организуем ответственность в чем-то (будь то функция, класс, библиотека или что-то еще). Все, что необходимо для того, чтобы эта ответственность появилась, должно быть передано, а не создано внутри объекта, где его нельзя смоделировать, изменить или настроить.

Классы не являются репозиториями методов, каждый из которых получает свои зависимости, для этого мы можем использовать функции. В этом случае «зависимость» скорее всего будет тем, что нужно A, чтобы знать, что bar() они должны вызывать на SomeClass.

...