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/


Responder a