patrones:di
Diferencias
Muestra las diferencias entre dos versiones de la página.
— | patrones:di [2023/04/07 21:26] (actual) – creado - editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
+ | ====== Inyección de Dependencias ====== | ||
+ | La [[wpes> | ||
+ | La Inyección de Dependencias es parte de un concepto mas amplio llamado // | ||
+ | |||
+ | La Inyección de Dependencias ( o la Inversión del control) se basa en que, en vez de que una clase vaya a buscar los objetos que necesita llamando a métodos que se los proporcionan, | ||
+ | |||
+ | <note tip>Para conseguir la Inyección de Dependencias lo más normal es que tengamos un framework que nos permite automatizar y simplicar la tarea.</ | ||
+ | |||
+ | Antes de ver el código Java vamos a poner un par de ejemplos cotidianos sobre el concepto de Inversión del control: | ||
+ | * En vez de ir a una oficina a que te hagan un seguro para el coche, que sea el agente de seguros el que viene a tu casa para hacerte el seguro. | ||
+ | * Cuando después de pasar una noche con una chica que acabas de conocer y que te ha gustado, le dices que la llamarás al día siguiente y ella te contesta, //no te preocupes ya te llamaré yo//. | ||
+ | * Si en vez de ir a tu al médico cuando estás enfermo , es el médico el que viene a tu casa. | ||
+ | |||
+ | Como podemos ver , los resultados son prácticamente lo mismo si hacemos las cosas de forma //normal// o invertimos la forma de hacerlo (( Aunque no está muy claro es si al final la chica te llamará :-) )). | ||
+ | |||
+ | Veamos el siguiente código Java: | ||
+ | <code java> | ||
+ | public class PruebaIoC { | ||
+ | SessionFactory sessionFactory=HibernateUtil.getSessionFactory(); | ||
+ | ProfesorDAO profesorDAO=new ProfesorDAOImplHibernate(); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Hasta ahora, si nuestra clase '' | ||
+ | |||
+ | Obviamente, la línea | ||
+ | |||
+ | Ésto nos lleva a preguntarnos , ¿qué tiene de malo la llamada a '' | ||
+ | |||
+ | Pues que el código de '' | ||
+ | |||
+ | ¿Cómo lo solucionamos? | ||
+ | |||
+ | Pues con la Inyección de Dependencias. La clase quedará ahora de la siguiente manera: | ||
+ | <code java> | ||
+ | public class PruebaIoC { | ||
+ | SessionFactory sessionFactory; | ||
+ | ProfesorDAO profesorDAO; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Vemos cómo ahora sólo se declaran las 2 propiedades. El framework de Inyección de Dependencias que usemos, automáticamente asignará los valores a las 2 propiedades sin que la clase '' | ||
+ | |||
+ | <note tip> | ||
+ | Otra de las ventajas de la Inyección de Dependencias es relativa a las pruebas automáticas pero éste es un tema demasiado amplio en el no nos vamos a meter. Más información se puede encontrar en otro curso que impartí sobre integración contínua en: | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | </ | ||
+ | |||
+ | ===== Referencias ===== | ||
+ | * [[http:// | ||
+ | * [[http:// |