Supongo que con mi anterior mail ha quedado clara mi postura al respecto. En
cuanto a lo de la interface, es redundante hacer casting a la interfaz
cuando la clase (supuestamente) creada a partir de _global[string]
implementa esa interfaz.

Siempre se puede hacer "duck typing" de cualquier forma (si la clase no
implementa la interfaz) pero me temo que eso es otro thread totalmente
diferente y fuera del rango de esta diatriba.

M.

 

> -----Mensaje original-----
> De: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] En nombre de Joseba Alonso
> Enviado el: martes, 28 de febrero de 2006 16:07
> Para: [email protected]
> Asunto: RE: [ASNativos] Instanciar clases dinamicamente
> 
> 
> > A nivel práctico resulta más sencillo implementar el 
> Factory Method (ó 
> > Abstract Factory en este caso, puesto que la instanciación 
> es dinámica 
> > en el crearModulo y no se está utilizando una clase de creación 
> > concreta)
> 
> Creo que te estas equivocando (igual lo hago yo) pero según 
> tengo yo entendido ni en el Factory Method (FM) y en el 
> Abstract Factory (AF) se habla de cómo realizar la 
> implementación, solo de la "arquitectura". He visto unos 
> cuantos que usan reflexion para hacerlo, que viene a ser "lo 
> mismo" que en Flash usar _global. Que yo sepa en el AF se 
> definen interfaces para la creacion de un conjunto de objetos 
> relacionados, mientras que en el FM se encarga solo de un 
> tipo en concreto. Que en la implementacion uses un switch, 
> reflexion o lo que quieras para determinar el tipo concreto 
> no influye en que sea un pattern u otro. Vamos, eso creo. De 
> todas maneras, el ejemplo que he puesto yo se hacerca mas a 
> una "simple factory", en realidad hacer un FM parece más 
> correcto en este caso, sobre todo si quiere escalar a 
> realizar distintos tipos de portales, pero es por darle algo 
> sencillo con lo que comenzar :)
> 
> 
> A mi me pareció cojonudo este articulo al respecto (en 
> castellano) 
> (http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voice
> s/MTJ_3624.asp
> )
>  
> > La signatura del método "crearModulo" debería ser entonces del tipo 
> > crearModulo(Function,Args[]), evitando el quick-and-dirty de 
> > _global[string] que, aunque funcione, podría dar sorpresas en el 
> > futuro --o no--.
> 
> Efectivamente podria darlas, aunque no conozco otra manera de 
> instanciación dinámica en Flash que no pase por usar el eval 
> o la array sintax, y el scope en este caso es correcto, las 
> clases se encuentran ahí, no se me ocurre otra forma que no 
> pase por un switch la verdad...
> 
> > De igual forma no
> > entiendo el uso del casting a la interfaz, ¿acaso es estrictamente 
> > necesario?
> 
> El factory method tendra que devolver algun tipo digo yo :) 
> un interface me ha parecido lo mejor.
> 
> > 
> > Me parece infinitamente más usable (y con más posibilidad para el 
> > control de errores) crear módulos de esta forma:
> > 
> >     import myModules.ConcreteModule;
> >     ModuleFactory.createModule(myModules.ConcreteModule,"");
> > 
> 
> Sin duda :) pero él tiene un string que viene de un XML, no 
> una referencia a la clase.
> 
> Interesante conversacion, por otra parte...
> 
> Joseba Alonso
> www.5dms.com
> www.sidedev.net 
> 
> ----------------------------------
> Lista ASNativos:[email protected]
> http://www.5dms.com/listas
> ----------------------------------
> 

----------------------------------
Lista ASNativos:[email protected]
http://www.5dms.com/listas
----------------------------------

Responder a