Управление зависимостями - PullRequest
2 голосов
/ 30 мая 2011

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

// arbitrarily complex
A a = new A(new B(new C(new D(new ...)), new E(new ...)), new F(new G(new ...)));
a.doSomething();

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

Ответы [ 2 ]

2 голосов
/ 30 мая 2011

В приведенном примере просто ДИ у бедного .Пока вы ограничиваете себя составлением всего графа объектов в корне композиции приложения (точка входа), у вас все будет хорошо.(Кроме того, я недавно слышал, что Дэн Норт ссылается на это как «новый» - это новый «новый» - намеки на людей в сообществе Java начинают возвращаться к этому способу построения графов объектов вместо этого).использования контейнеров).

Однако вы также можете использовать DI-контейнер, если будете следовать шаблону Register Resolve Release .В частности, в приложениях на основе запросов (веб-приложения и службы) управление временем жизни может быть сложным с помощью DI Бедного человека, поэтому в этих типах приложений может быть очень полезен контейнер.

0 голосов
/ 30 мая 2011

Насколько я знаю, единственный способ держать все эти зависимости под контролем - это либо создать объект общего контекста, который вы можете обойти (но даже если он имеет свои сложности), либо использовать IoC с внедрением конструктора.

Особенно в приведенном вами примере CI является хорошим решением, поскольку вы можете управлять сложностями, просто конфигурируя контейнер.

Только мои 2 цента ...

...