patron inyeccion injection ejemplo dependency dependencias control dependency-injection inversion-of-control service-locator

dependency-injection - injection - inyeccion de dependencias spring



Cómo usar la Inyección de Dependencia y no el Localizador de Servicio (1)

¿Debería configurar todo para que haya un lugar donde todas las clases siempre tengan una cadena de dependencia para las clases más profundas? (si yo / eso tiene sentido)

Sí, esto se denomina raíz de composición de su aplicación, y es donde debe configurar su contenedor de IoC y resolver su tipo de raíz.

No es correcto tener todo su código lleno de dependencias en el contenedor IoC de su elección, ¿o sí?

Correcto, es mejor no pasar referencias a su contenedor IoC en torno a sus tipos, ya que esto los hará menos reutilizables, y unir los tipos al concepto de contenedores IoC en general.

Entonces, ¿dónde "usas" tu contenedor (para re-diluir)? ¿Y cómo logras resolver todo, tan profundo como sea tu código? ¿Es parte de diseñar todo de manera correcta mediante el uso de interfaces a través de cada capa hasta la capa frontal?

Utilizaría su contenedor en la raíz de su composición y en cualquier parte de su código que necesite crear instancias de tipos (es decir, desde los tipos de fábrica) a través del contenedor (generalmente para el soporte de la cadena de dependencia).

Muchos contenedores IoC pueden generar estos tipos de fábrica para usted, por lo que solo debe pasar, por ejemplo, IMyFactory como dependencia, o en algún contenedor de IoC, un Func<IMyService> . Eso significa que no necesita crear tipos de fábrica que tengan una dependencia en su contenedor IoC.

En términos de uso de interfaces, el Principio de Inversión de Dependencia establece que debe depender de abstracciones, no de concreciones, por lo que deberá tener en cuenta su código teniendo en cuenta este concepto si desea adoptar la inyección de dependencia.

Escucho que la gente dice que no debe usar el Localizador de servicios para su Inyección de dependencia. Entonces, ¿cómo inyectas exactamente las dependencias sin depender de un localizador de servicios? Quiero probar contenedores IoC, pero no quiero aterrizar en un anti-patrón.

¿Debería configurar todo para que haya un lugar donde todas las clases siempre tengan una cadena de dependencia para las clases más profundas? (si yo / eso tiene sentido)

No estoy en lo correcto al tener todo su código lleno de dependencias en el contenedor IoC de elección, ¿o sí?

Entonces, ¿dónde "usas" tu contenedor (para re-diluir)? ¿Y cómo logras resolver todo, tan profundo como sea tu código? ¿Es parte de diseñar todo de manera correcta mediante el uso de interfaces a través de cada capa hasta la capa frontal?

¿O solo me falta un punto?

Déjame recordarte que simplemente no quiero caer en un antipatrón y necesito algunos consejos / un aviso sobre ello.