Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

patrones:di [2014/09/09 07:57]
admin
patrones:di [2014/09/09 09:24] (actual)
admin [Inyección de Dependencias]
Línea 16: Línea 16:
  
 Veamos el siguiente código Java: Veamos el siguiente código Java:
-<code java>+<sxh java>
 public class PruebaIoC { public class PruebaIoC {
-    SessionFactory sessionFactory=HibernateUtil.getSessionFactory(); +  ProfesorDAO profesorDAO=new ProfesorDAOImplHibernate(); 
-    ​ProfesorDAO profesorDAO=new ProfesorDAOImplHibernate();+  ​SessionFactory sessionFactory=HibernateUtil.getSessionFactory(); 
 } }
-</code+</sxh
- +  * Línea 1: Para crear el objeto del interfaz ''​ProfesorDAO''​ usamos la orden ''​new''​ e indicamos el nombre de la clase que implementa el interfaz que es ''​ProfesorDAOImplHibernate''​ 
-Hasta ahora, si nuestra ​clase ''​PruebaIoC''  ​necesitaba un objeto, se llamaba a un método ​que le proveía dicho objeto o simplemente se creaba con ''​new''​, tal y como vemos en las líneas anteriores.+  * Línea 2: Para crear el objeto ​del interfaz ''​SessionFactory''​ usamos el método ​estático ​''​getSessionFactory()''​ de la clase ''​HibernateUtil''​.
  
 +¿Cual son los problemas de estas 2 líneas?
 Obviamente, la línea ​ ''​ProfesorDAO profesorDAO=new ProfesorDAOImplHibernate()''​ es bastante lamentable ya que estamos atando el código de ''​PruebaIoC''​ a una implementación concreta del interfaz ''​ProfesorDAO''​. Éso se debe evitar a toda costa , aunque una solución es crear otra clase de factoría del interfaz ''​ProfesorDAO''​. Obviamente, la línea ​ ''​ProfesorDAO profesorDAO=new ProfesorDAOImplHibernate()''​ es bastante lamentable ya que estamos atando el código de ''​PruebaIoC''​ a una implementación concreta del interfaz ''​ProfesorDAO''​. Éso se debe evitar a toda costa , aunque una solución es crear otra clase de factoría del interfaz ''​ProfesorDAO''​.
  
Línea 42: Línea 43:
  
 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 ''​PruebaIoC''​ sepa de dónde han salido. Es decir, que hemos eliminado las dependencias a ''​HibernateUtil''​ y hemos evitado incluir en el código la implementación concreta del interfaz ''​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 ''​PruebaIoC''​ sepa de dónde han salido. Es decir, que hemos eliminado las dependencias a ''​HibernateUtil''​ y hemos evitado incluir en el código la implementación concreta del interfaz ''​ProfesorDAO''​.
 +
  
 <note tip> <note tip>
patrones/di.1410242241.txt.gz · Última modificación: 2014/09/09 07:57 por admin
Ir hasta arriba
CC Attribution-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0