У кого-нибудь есть хорошая аналогия для внедрения зависимости? - PullRequest
24 голосов
/ 08 января 2009

Я прочитал много статей о Внедрении Зависимостей, а также посмотрел много видео, но все еще не могу понять, как это сделать У кого-нибудь есть хорошая аналогия, чтобы объяснить это?

Я смотрел первую часть скриншота «Осень проворной» и все еще был немного растерян.

Ответы [ 12 ]

0 голосов
/ 30 декабря 2011

Я думаю, что хорошей аналогией является шестилетний ребенок с набором lego.

Вы хотите, чтобы ваши объекты были похожи на кирпичи lego. Каждый из них не зависит от всех остальных, но предлагает четкий интерфейс для подключения их к другим. При их соединении не имеет значения, какие два кирпича вы соединяете вместе, если они имеют соответствующий интерфейс.

Ваша структура внедрения зависимостей похожа на шестилетнюю. Он следует инструкциям (т. Е. Вашему конфигурационному файлу, аннотациям и т. Д.), Чтобы соединить определенные блоки вместе определенными способами для создания конкретной модели.

Конечно, поскольку интерфейсы кирпичей довольно обобщенные, они могут сочетаться во многих отношениях, поэтому легко придумать новые наборы инструкций, которые шестилетний может использовать, чтобы сделать совершенно другой модель из того же кирпича.

0 голосов
/ 08 января 2009

Ваш менеджер проекта просит вас написать приложение.

Вы могли бы просто написать код, основанный на вашем профессиональном опыте, но вряд ли это будет тем, чего хочет ваш PM.

Лучше было бы, если бы ваша зависимость от PM вставила вам , скажем, спецификации для приложения. Теперь ваш код будет связан со спецификацией, которую он вам дает.

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

Лучше, если вам скажут, что такое техническая платформа.

Лучше, если бы вам сказали, когда это нужно сделать.

Etc ..

...