lunes, noviembre 07, 2005

Dependecy Injection Pattern



Ya he podido echar un vistazo al articulo de Martin Fowler sobre el patrón Dependency Injection (DI).

Lo primero que hace es discutir del porque del nombre. Ya que se le estaba llamando de manera incorrecta Inversion of Control.
Posteriormente explica los tres tipos disponibles que hay:
  • Constructor Injection
  • Setter Injection
  • Interface Injection
Entrando a discutirlas con ejemplos concretos de frameworks: picocontainer, spring y avalon (dicho proyecto de apache ya no existe como tal; aunque tras su extinción han surgido varios proyectos derivados).

A continuación compara el patrón con el Service Locator.

Lo que se puede extraer del articulo:
  • Tanto el Service Locator como la DI son maneras válidas de separar la configuración del uso.
  • Si estamos realizando un servicio que va a ser usado en aplicaciones fuera de nuestro control, la DI tiene ventajas.
  • Entre los tipos de DI, recomienda la 'Constructor' y la 'Setter' en ese orden (la de interfaz es mas 'intrusivo').
Tanto picocontainer como spring soportan la constructor y la setter. El que un framework use la DI no quita a que pueda usar Locators (Avalon combina ambos).

El patrón no es nada sorprendente, pero como casi siempre en estos casos, lo que hace es poner nombre a soluciones que se estaban usando.

No hay comentarios: