Hola Leonardo, Va mi opinion con aclaraciones. Vos no mencionas que tipos de objetos son los que crearias mediante factories con el fin de inyectarle las dependencias y es necesario que lo aclares porque la respuesta puede ser distinta dependiendo de esto.
Si fueran objetos de logica de negocio, la factory es una buena salida. Si en cambio fuesen otro tipo de objetos (una capa de servicios por ejemplo), no veo inconveniente en usar un framework de IoC, incluso creo que esa es la opcion que menos dependencia genera. Hay una discusion eterna en la lista DDD sobre si los objetos de dominio tienen o no tienen que tener referencias a repositorios y otros servicios de infraestructura. Mi opinion al respecto aun no esta definida porque quiero investigar un poco mas si es posible o no prescindir de los repositorios en los objetos de negocio, estoy esperando el proximo proyecto de estudio para eso. No obstante, si fueran necesarios, la discusion es si se inyectan mediante un framework o el codigo dentro del objeto busca el repositorio desde una registry de servicios. Yo prefiero la segunda opcion porque me parece mas flexible, los detractores la critican porque dicen que hace dificil el unit testing. Yo no tengo este problema porque uso reflection o Castle Windsor para inyectar la implementacion de los servicios en la registry. De todas maneras, creo que seria bueno que los objetos de dominio no dependiesen para nada de los servicios, pero aun tengo que demostrarme que esto es posible. Buscamos desarrolladores .NET (CV a [EMAIL PROTECTED]) Carlos Peix [EMAIL PROTECTED] tel: 4257-4622 cel: 15-4406-7571 -----Mensaje original----- De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Leonardo Micheloni Enviado el: Lunes, 23 de Junio de 2008 11:27 a.m. Para: [email protected] Asunto: [puntonet] Inversión de controls vs Factory Hola a todos, Mando la pregunta a esta lista porque tengo problemas con la de arquitectura, me rechaza los mensajes y creo que la mayoría de la gente de esa lista está en esta. La cosa es así, estoy metiendo mano en una aplicación para hacer unos cambios, el tema es que es bastante compleja y delicada también y también está bastante mal en el sentido del diseño, tiene mucho acopalmiento, con lo cual es muy difícil de probar los cambios que tengo que hacer sin correr la aplicación. Por lo tanto como quiero tener pruebas unitarias para todo lo que voy a hacer y de paso para algunos procesos que no voy a tocar ya que tengo algunos días para esto y de paso lo dejo con un buen "code coverage" se me plantea la tarea de rediseñar algunas cosas. Entre otras el tema del acomplamiento me lleva a cambiar la forma en que se instancian algunas clases y inyectarles dependencia, es decir, que por el constructor se pasen interfaces de otras clases que usa internamente para faciliar inyectar "mock objects" para las pruebas unitarias (hacerlas bien unitarias), ok hasta ahí todo bien. El tema es que no me queda muy claro si utilizar un partón factory para la creación de los objetos (ahora la instanciación en más compleja por la inyección de depencias) o inversión de control, en realidad la pregunta es por qué debería utilizar inversión de control (con winsor, unity, spring, ninject o lo que sea), me parece que aumenta el acoplamiento y más que nada los modelos basados en configuración hace más difícil comprender el sistema. Antes que se me tiren en palomita, les doy mi impresión, con factory se puede resover todo lo mismo que con inversión de control y no tenemos todo un sistema "pegado" a un punto, me gustaría conocer su opinión. Gracias y saludos. -- Leonardo Micheloni. Ayudando a organizar las primeras jornadas ágiles de Latinoamérica http://agiles2008.org/ Blog Personal http://leomicheloni.blogspot.com/ http://multithreadingincsharp.blogspot.com/
