Archive for marzo, 2011

Mar 08 2011

Inyección de Dependencias

Published by under Vida

Durante los últimos días he estado investigando algunos conceptos que se encuentran relacionados con algunos frameworks de trabajo.

En este caso, hablaremos de Inyección de Dependencias.

Problemática.

Durante el desarrollo orientado a objetos, es común la creación de un objeto nuevo, dentro de la definición de otro, ejemplo:

Public class Clase1 {

Private clase2 objeto2;

Public Clase1 (){

// constructor

This.objeto2=new clase2();

}

}

 

Aun cuando el código es correcto, y se logra acceder a los métodos de objeto2 desde los métodos del objeto1, si el objeto 1 es instanciado en una gran cantidad de ocasiones, por definición el objeto 2 también lo será, imaginen que el objeto 2 en su constructor abre una conexión a una base de datos, existirá en su momento, tantas conexiones a bases de datos abiertas, como instancias del objeto1 y de los que hayan tomado a este como base para ser heredado.

Esto representa un problema serio, puesto que podemos llegar a tirar el servidor de bases de datos, amén de no ser correcto.

Solucion:

Para este caso, se puede implementar la inyección de dependencias.

Ejemplo 2:

 

public class Clase {

private Clase2 objeto2;

public Clase(){

//constructor

}

public void setObjeto2(Clase2 objeto2){

this.objeto2 = objeto2;
}

}

Como se pueden dar cuenta, el truco en este caso consiste en la creación del objeto 2, la cual no se realiza dentro de la definición del objeto 1, si no que esta (la instancia del objeto 2) es pasada al objeto uno por medio de una función SET (setObjeto2).

De esta forma, no caemos en el problema definido anteriormente.

 

Un Framework de trabajo que implementa Inyección de dependencias con éxito es Spring, existen versiones tanto para java como para .net

 

 

 

 

 

No responses yet