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 ----------------------------------

