Ver Mensaje Individual
  #2  
Antiguo 07-07-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
Hola Azid, después te pasas por la taberna

Bueno, con respecto al Modelo MVC no lo he llevado a la práctica exactamente y por lo que comprendo (de lo poco que estuve leyendo sobre este modelo) se basa en la idea del Observador.

Por lo que comprendo... una vista notifica (envia un mensaje) al controlador y éste aplica los cambios al modelo. Y si es necesario notificar de algo a la vista, el controlador le hace notificar de ello.

En principio, pareciera ser que el controlador no sabe con que vistas interactuará. Y si es así, lo único que conoce es una "interfaz" común a ellas.
Por lo general, en principio, una implementación de este tipo de patrón lo que hace es que el Controlador mantenga una referencia de los objetos vistas... Yo lo veo así: las vistas se suscriben al controlador. Y éste cuando sea necesario, recorre todos los objetos registrados lanzando el evento adecuado pasando como parámetro el "valor" que sea necesario.

La implementación del evento queda a cargo de cada vista.

Si es asi como debería actuar, me parece entonces que el Controlador no es el experto en información adecuado para crear las vistas. Más bien, el no tiene pleno conocimiento de quienes son ni que hacen. Simplemente el les hace saber que "algo cambió"

Por tu descripción del tema, pareciera ser que lo que deseas es implementar una fábrica de vistas.

Y si uno ideas, pareciera ser que el tema puede venir así:
1. Se cre el controlador
2. Se crea la Fábrica
3. la Fábrica crea la vista
4. La vista creada se registra en la "colección" del Controlador para que este le notifique de los cambios.

Ahora el tema de como hacer la referencia desde la vista al controlador, pareciera ser que sería apropiado que la vista tenga visibilidad de atributo sobre el Conntrolador...

Código Delphi [-]
TVista = class(TForm)
private
  Controler : TControler;
  ...

De modo que cuando desee enviarle un mensaje, la vista pueda recuperar dicha referencia.

Tal vez, sea la fábrica quien le indique a la vista a que controlador referenciar. Por lo poco que se, me resulta que es una buena candidata. Me parece adecuado, al menos por ahora, que al momento de crear la vista, la fábrica le haga saber el controlador. Por lo pronto, yo me hago la idea de esto:

Código Delphi [-]
constructor TVista.Create(Controler: TControler);
begin
  inherited Create;
  FControler := Controler;
  ...
end;

Si el tema de la fábrica es lo que se debería seguirse, me queda ahora la duda ¿Quién es el dueño realmente de las vistas? Una respuesta rápida me indicaría que es TAplication. Después de todo... ¿No es él quien tiene y guarda la referencias a todas la formas que componen a la aplicación?

Pero no se que tan viable, y aplicable, sea esta idea. Reconozco que el patrón Observador y el MVC son todavía de estudio para mi.

No se si te he ayudado o confundido más. Disculpame amigo, pero más no sabría decirte. Tengo que estudiarlo mejor al patrón.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita