Inyeccion de Dependencia (Dependency Injection, DI)


Es un término comúnmente confundido con Inversion de Control.

En un escenario en el que utilizamos IoC, delegamos en una entidad “Contenedor” no solo la gestión de las instancias, sino la inyección de las sub-partes (dependencias). Si una venta se compone de un cliente y un producto, al instanciar un objeto venta la DI le inyecta directamente su cliente y su producto específicos.

La arquitectura de Spring esta basada en patrón de diseño llamado “Dependency Injection”, Rob Harrop define a este patrón como: “Es la manera de externalizar la creación y el manejo de las dependencias de los componentes”.

Clases e InterfacesPara comprender el patrón Dependency Injection considere la figura 1 la cual es un diagrama de clases, la clase Foo depende de una instancia de la clase Bar, para realizar algún tipo de procesamiento, tradicionalmente en la clase Foo se tendría la sentencia Bar bar=new Bar(); para crear el objeto bar, usando Dependency Injection una instancia de Bar (o bien una subclase) es proporcionada a la clase Foo en tiempo de ejecución por algún proceso externo, es decir la clase Foo no llama a crear el objeto bar si no que el proceso externo le proporciona el objeto bar a la clase Foo, es por eso que Rod Johnson define a Dependency Injection con la frase: “No me llames, yo te llamo”.

James Shore explica concisamente, “consiste en dar valores a las variables de un objeto”. Una clase, para estar completa necesita información, datos de otra. Con la DI, lo que hacemos es proporcionárselos, ya no tiene que pedir esos datos, se le dan.

1La idea se basa en que dado un objeto, “algo” resuelva sus dependencias, inyectandoselas ya sea a través de métodos setXXX o de uno de los constructores del objeto; para que esto sea posible, ese “algo” debe manejar el ciclo de vida del objeto.

Tipos de DI según Martin Fowler:

  1. TIpo 1 – Inyeccion de Interface.
  2. Tipo 2 – Inyeccion de Setter.
  3. Tipo 3 – Inyeccion de Contructor.

1Jorge Rodriguez, Interplanet S.A (Chile)

Anuncios
Inyeccion de Dependencia (Dependency Injection, DI)

Un comentario en “Inyeccion de Dependencia (Dependency Injection, DI)

Los comentarios están cerrados.