¿Cuál es la diferencia entre DI y IoC? [duplicar]

13

Soy nuevo en Inversion of Control, Dependency Injection y todo lo relacionado con estas cosas, así que discúlpeme si no soy específico en mi pregunta: ¿Hay algún código mágico, una buena explicación o un enlace, por lo que? ¿Finalmente puedo distinguir los conceptos?

Realmente creo que usar la inyección de dependencia ya significa usar la inversión de control, pero ¿hay alguna forma de usar la inversión de control sin usar la inyección de dependencia?

Ya he leído los artículos de Martin Fowler pero todavía encuentro los conceptos muy confusos.

    
pregunta Daniel Conde Marin 23.01.2012 - 03:15

2 respuestas

9

Inyección de dependencia es una forma en que la Inversión de control a menudo se implementa, pero hay otras. Del artículo de Wikipedia Inversión de control :

  

Las técnicas de implementación están influenciadas por el lenguaje informático utilizado.

     

En Java hay seis técnicas básicas para implementar Inversión de control. Estos son:

     
  1. utilizando un patrón de fábrica
  2.   
  3. utilizando un patrón de localización de servicios
  4.   
  5. utilizando una inyección de constructor
  6.   
  7. utilizando una inyección de colocador
  8.   
  9. utilizando una inyección de interfaz
  10.   
  11. utilizando una búsqueda contextualizada
  12.   

El constructor, el definidor y la inyección de interfaz son todos aspectos de la inyección de dependencia.

    
respondido por el Bill the Lizard 23.01.2012 - 03:29
6

Inversión de control es un concepto general donde el flujo de control normal se "invierte" de alguna manera.

Por flujo "normal", me refiero a un flujo de aplicación por lotes tradicional: el código se ejecuta de principio a fin, crea recursos, solicita datos y proporciona resultados. El flujo de control es dictado por la aplicación en sí misma, invocando bibliotecas e instalaciones del sistema según sea necesario. Cualquier inversión de esto, donde las bibliotecas en lugar de la aplicación (usando estos términos de manera un tanto vaga) impulsa el flujo de control, es en cierto sentido una inversión de control.

Uno de los ejemplos más comunes de IoC es un bucle de eventos. En un bucle de eventos, el kit de herramientas de la GUI (o el sistema operativo) está en control y vuelve a llamar a su aplicación para manejar eventos y procesar la entrada. El flujo normal: solicitud de entrada & procesándolo: se invierte para que el procesador de entrada maneje la aplicación, en lugar de hacerlo al revés.

La inyección de dependencia es un uso específico de Inversión de control, donde la inversión de control se aplica a la selección y asignación de dependencias. En lugar de tener un componente que ejemplifique los subcomponentes que requiere, el código de creación (ya sea el código de la aplicación, manualmente o el contenedor DI) crea una instancia de los subcomponentes necesarios y los inyecta en el componente.

    
respondido por el Michael Ekstrand 23.01.2012 - 04:00

Lea otras preguntas en las etiquetas

Comentarios Recientes

Cuando hablamos de lecturas incrementales, la palabra no significa simplemente incremental. También significa reproducir todo el artículo, solo porque queremos hacerlo. Mantenemos todos nuestros valores de variables clave, y en las arquitecturas antiguas basadas en procesos, se copian de vez en cuando para asegurarnos de no perderlos de vista. Pero, ¿qué pasa con las fuentes de información que cambian sobre la marcha y el mundo cambia tan rápido? ¿Prefieres tener ambos? ¡Para sostener el sistema, absolutamente!... Lee mas