Ahhhhh, ahora me cae la ficha , estamos hablando de lo mismo .. pero no lo
conocía como DI. Resumiendo, para implementar DI usas AF y Reflection.

 

 

 

  _____  

De: patrones@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Daniel
Calvin
Enviado el: jueves, 14 de diciembre de 2006 12:06
Para: patrones List Member
Asunto: [patrones] Inversion of Control and Dependency Injection

 

Sebastian

 

Te contesto 1 de metido.....

 

1)       Que ventajas hay en usar este patrón y no por ejemplo el Abstract
Factory, o Reflection ? 

Yo implemento DI mediante Abstract Factory y Reflection .

 

Osea, no son competidores, sirven para....

 

Saludos

 

Daniel Calvin

 

El día 14/12/06, Sebastian Renzi <[EMAIL PROTECTED]> escribió: 

Angel, antes que nada gracias por la respuesta.

Te hago un par de consultas,

1)       Que ventajas hay en usar este patrón y no por ejemplo el Abstract
Factory, o Reflection ? 

2)       Específicamente hablando del caso que vos nombras en el Repository
(DDD), de que tipo de datos es B dentro de A ?, interface ? 

 

Saludos y gracias

  _____  

De: patrones@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Angel
"Java" Lopez
Enviado el: jueves, 14 de diciembre de 2006 11:33
Para: patrones List Member
Asunto: [patrones] Inversion of Control and Dependency Injection

 

Hola Sebastian!

 

Gran pregunta.... El tema es que en objetos, siempre estamos comunicando
instancias. Un objeto A puede necesitar comunicarse con un objeto B. Como
consigue el objeto A una referencia a B. De varias formas: alguien se lo
pasa como parametro, en un metodo, o alguien se lo paso como parametro en un
constructor, o hay una referencia a B en algun lugar estatico, o el propio A
lo crea a B, por ejemplo con un new B(). Tambien estan las mismas variantes,
pero con FB, una factoria de B: A puede tener una referencia a FB y luego a
FB le pide un B. 

 

Pero todo esto, de alguna forma, delega a alguien la creacion de un new B en
algun momento y en algun punto del codigo. Con una factoria, se podria crear
un new B2(), o new B3(), instancias de subclases de B, o de clases que
implementen la misma interface que B, etc.... Pero aun asi, hay casos que el
tipo de B es cambiable. De ahi la aparicion del Dependency Injection (A
depende de B, pero alguien le inyecta con cual B trabajar). 

 

Asi que el patron se aplica, cada vez que A tiene que trabajar con B, pero
no sabes de antemano con que tipo especifico de B vas a trabajar. 

 

Lo mismo se extiende si B es un simple parametro para A (ejemplo: A es una
factoria de conexiones, B es el string de conexion). 

 

De ahi, a cuando es bueno usar un patron, esa es una pregunta mas grande.
Como todo patron, su uso depende del contexto. Pero podriamos apuntar que el
DI permite, por ejemplo, que A, digamos un Entity o Service en la
terminologia DDD, se comunique un repositorio B, y alguien le de ese B.
Alguna vez le damos B1 (un repositorio que trabaja todo en memoria), otras
veces le damos un B2 (un repositorio que va a un DAL nuestro), otras veces
un B3 (un repositorio que va contra un ORM). Y en todos esos casos, A nunca
toma la decision. El sistema DI (de los cuales pico container, hivemind,
spring framework son exponentes en Java, y hasta el mitico AjFramework lo
usa de alguna forma.... :-)...:-), nos permite hacer esos "juegos". 

 

Estoy escribiendo rapido, mientras actualizo documentos de User Stories,
hago un cambio de Team Foundation Server, pienso en el lema de Urysohn para
conseguir la metrizacion de espacios topologicos normales, analizo los
adjuntos en categorias genericas, y medito sobre algun parrafo de Ser y
Tiempo de Heidegger, y leo alguna critica que le hace Ingenieros... si, hoy
me olvide de tomarme la pastilla verde... :-) 

 

Hoy estoy con la nena... (aclaraciones en
http://ajlopez.zoomblog.com/archivo/2006/12/09/estoy-con-la-nena.html)

 

No se si se entendio algo....

 

Che, no crossposting, preguntar primero en una lista, y si no hay respuesta,
preguntar en otra.....

 

Nos leemos!

 

Angel "Java" Lopez

http://www.ajlopez.com/ 

----- Original Message ----- 

From: Sebastian <mailto:[EMAIL PROTECTED]>  Renzi 

To: patrones List Member <mailto:patrones@mug.org.ar>  

Sent: Thursday, December 14, 2006 10:52 AM 

Subject: [patrones] Inversion of Control and Dependency Injection 

 

Buenos días lista, en la lista de DDD mandaron unos links sobre el tema del
subject, cuando empecé a leer me di cuenta que es un tema que tiene mucha
info para leer, pero me gustaría saber en la practica específicamente cuando
surge esta necesidad, en que casos es bueno usar este patrón. Tengo
entendido que los chicos de Cooperator habían dicho que usaban este patrón
dentro de su framework. 

 

Gracias

 

Sebastian Renzi

 

 

 

 



__________ Información de NOD32, revisión 1921 (20061214) __________

Este mensaje ha sido analizado con NOD32 antivirus system
http://www.nod32.com <http://www.nod32.com/> 


__________ Información de NOD32, revisión 1921 (20061214) __________

Este mensaje ha sido analizado con NOD32 antivirus system
http://www.nod32.com <http://www.nod32.com/> 




-- 
Daniel A. Calvin
Cooperator Team Member
http://www.cooperator.com.ar 
Microsoft Certified Professional 

Responder a