Pregunta

¿Cuáles son las características más importantes que debe contener un contenedor IOC? Puede crear contenedores fácilmente en 15 líneas de código , pero ¿qué debería incluir para que sea " útil " en un proyecto?

¿Fue útil?

Solución

Este es un tema bastante abierto y dado a mucha subjetividad, pero trataré de responder desde un punto de vista muy pragmático. Dados los proyectos en los que he trabajado y mi experiencia con la IoC, diría que hay al menos tres grandes empresas en cuanto a la utilidad.

  1. Configuración : cualquier IoC que utilice debe tener una ubicación central que le permita configurar el comportamiento de ese contenedor. Ya sea que se trate de un archivo de configuración o un buen conjunto de llamadas a la API que se pueden envolver en una clase global en algún lugar, si el contenedor no es fácilmente configurable, será un dolor de cabeza.
  2. Gestión de vida útil : realmente desea un contenedor que tenga la capacidad de permitir una vida útil variada de los objetos. Es posible que desee que un determinado objeto siempre obtenga un nuevo IPersonCreator, pero solo desea que exista un IPersonService en cualquier momento dado.
  3. Inyección de dependencia automática : está bien, por lo que la Inyección de dependencia es el concepto sobre el que se basa IoC, pero no desea tener que gestionarlo usted mismo. La idea aquí es que si solicita un IPersonCreator por primera vez, debería resolver todas sus dependencias, sus dependencias, etc. automáticamente.

En general, lo que necesita depende del proyecto, pero existen varios contenedores que se adaptarán perfectamente a sus necesidades.

Otros consejos

En orden descendente de importancia:

  1. Permitir al menos inquilino y el constructor de inyección,
  2. Configuración separada del código,
  3. Permitir diferentes estilos de configuración (XML o anotaciones),

Esto requerirá más de 15 líneas de código, pero me parecen clave.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top