Подтвердить что ты не робот

Передовая практика зависимости от инъекций и анти-узоры

Я относительно неквалифицирован в Injection Dependency, и я хотел бы изучить некоторые лучшие практики и анти-шаблоны для использования и избегать, соответственно, при использовании DI.

4b9b3361

Ответ 1

Мне очень понравилась эта статья относительно DI, поскольку она нацелена на людей, которые не имеют тонны опыта DI, или даже не знают, что это такое.

https://mtaulty.com/2009/08/10/m_11554/

Что такое единство?

It’s a "dependency injection container".

Теперь, в этот момент куча людей в этом будет сказано: "Да, мы знаем и уже использовали его по причинам A, B, C или weve решили не использовать его по причинам X, Y, Z", и я представляю себе куча других людей может сказать:

"Huh? What’s a dependency injection container?"

Этот пост для последних людей - он не должен быть исчерпывающим, но надеюсь, что это не полностью бесполезно: -)

Ответ 2

По-моему, книга Dhanji Prasanna Injection of Dependency обязательна для разработчиков программного обеспечения, как начинающих, так и экспертов. Он напрямую касается ваших вопросов DI.

Ответ 4

Я обнаружил, что когда я вижу нарушение Закона Деметра, это намек на то, что мне может понадобиться инъекция зависимостей.

Например:

void doit()
{
    i += object.anotherobject.addvalue; //violation of Law of Demeter
}

Иногда подсказки, что я, возможно, захочу в зависимости, вводят anotherobject.

Ответ 5

Мое основное правило о том, когда использовать DI, заключается в том, что я буду вводить между слоями, поэтому между моим контроллером и дао будет слой, поэтому я могу вставить, так что, если я хочу издеваться над слоем, я могу.

Я думаю, что использование DI внутри одного и того же слоя не является хорошей идеей, главным образом потому, что слой должен быть тесно связан, поскольку они связаны друг с другом, если у вас нет истории пользователя, которая делает ее полезной.

Например, если ваш DAO может находиться на разных компьютерах, вам может потребоваться сделать вид, что они являются одним слоем, но использовать DI для фактического переключения между всеми на одной машине и отдельными машинами. Затем разработчик может делать все на одной машине, и он должен работать на отдельных машинах.

Но, если нет какой-то насущной необходимости, я думаю, что DI внутри одного слоя является ненужным осложнением.