Buenas!

------ Hilo relacionado con un hilo anterior (instanciar clases dinamicamente) 
---------

Gracias a vuestras sujerencias estoy pensando y haciendo pruebas sobre la 
implementación de un patron AbstractFactory en un framework propio, y tengo 
algunas dudas.

Lo voy a aplicar, ademas de al tema de los modulos, comentado en el otro hilo, 
al asunto de los controles habituales: Control, Boton, ScrollBar, Form, Lista, 
BotonLista, Menu, BotonMenu, etc (Todos derivan directa o indirectamente de la 
clase Control)

El AbstractFactory se encargará de definir las funciones 'createXxxx' para cada 
control del framework, y en principio pensaba implementarlo como una clase 
base, con implementacion de las funciones, que se encarguen de instanciar las 
clases estandar mencionadas antes.

Y luego estaran los ConcreteFactory propios de cada portal. Portal creado sobre 
el framework base.
Por ejemplo menganitoFactory,  y habrá clases derivadas de controles segun 
necesidad de personalizacion en ese portal, por ejem: menganitoBoton. La 
funcion createBoton del menganitoFactory creará un menganitoBoton.

Bueno, esto ya lo sabeis de sobra, pero ahora bienen mis dudas:

¿Como implemento/instancio los Factory?

He probado con un singleton, disponible globalmente, con el que solo tengo que 
hacer:

  // Factory es Singleton
  var factory:Factory = Factory.getFactory();
  var _tb:Boton = factory.createBoton(.....);

Pero el singleton es clase Factory, y tendria que ser menganitoFactory en el 
portal concreto.
¿Tengo que instanciar un menganitoFactory y pasarselo al Singleton Factory, 
para que lo devuelva con la función getFactory()?
¿Se pueden derivar clases de una clase Singleton?

¿O me estoy liando y no deberia usar un singleton?.

Si no uso un singleton, tendria que definir una manera para que todos los 
'Clientes' ( los controles que usan el factory, con composicion con otros 
controles, por ejem, Menu, con BotonMenu, etc), tengan acceso a la instancia 
del Factory.
No se si me equivoco, pero tengo entendido que es mala practica OOP el poner en 
todos los controles referencias a una instancia 'superior' (que pueda ser el 
factory directamente, o el 'mainForm', o el 'App'..).
Porque en los ejemplos de AbstractFactory suelen pasar el factory como 
parametro, pero eso no me cuadra mucho con lo que tengo ya implementado.

¿O igual deberia usar un Singleton global, como el que uso: 'Aplicacion', e 
incluirle como miembro al factory, siendo del tipo concreto de Factory 
correspondiente al portal concreto?


Perdon otra vez por la chapa!
Si teneis alguna sugerencia se agradece mucho,

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

Responder a