miércoles, 2 de abril de 2008

Cairngorm IV:FrontControllers

El patrón FrontController está pensado para centralizar las invocaciones de lógica de la aplicación en un único lugar. Todo lo que se pueda hacer o se haga en una aplicación lo podremos ver desde el FrontController. Paralelamente, todas las acciones invocadas (ejecución de commands) está centralizada de forma que si los requerimientos lo demandasen se podría añadir funcionalidad transversal a ellos (HistoryManager, logging, etc.)

Paralelamente a esto, las invocaciones de commands (ejecución del método execute) no se hace directamente invocando el método execute como vimos en el último artículo, sino que se hace a través de un objeto Event. Por lo tanto la ejecución de una función se mapea contra un objeto, que es serializable y almacenable, facilitando por tanto su posterior re-invocación (acciones de rehacer y deshacer, volver atrás, paginado, etc).


A nivel implementacional nuestra aplicación sólo constará de un FrontController que implementará una Singleton, nuestro FrontController y deberá extender de la clase com.adobe.cairngorm.control.FrontController

Este FrontController actuará como un diccionario, cuando (y siguiendo el mecanismo que veremos enseguida) alguien diga “sayHello�? se encargará de localizar el command pertinente y ejecutarlo (HelloWorldCommand).

Veamos un ejemplo implementacional del FrontController.

Ahora para ejecutar el command lo tendremos que hacer de la siguiente forma:

Lo primero que tenemos que hacer en una aplicación basada en Cairngorm es inicializar nuestro FrontController (en el caso del ejemplo SampleFrontController). Esto lo hacemos mediante mxml con el tag

A partir de ahí cuando queremos invocar un command (fijémonos que el método invocador no sabe, a nivel implementacional, que se va a ejecutar un command) lo hacemos a través de un evento CairngormEvent. En este evento seteamos la propiedad type al valor que hemos configurado en nuestro FrontController.

Una vez ya tenemos el evento, lo lanzamos a través de CairngormEventDispatcher. Internamente la clase FrontController (super clase de nuestro SampleFrontController) suscribe nuestros commands a los eventos que indiquemos al hacer un addCommand. En el momento de suscribirse, el FrontController, se convierte en un listener.

Es importante destacar que lo único que tendremos que hacer cuando queramos implementar un nuevo caso de uso en nuestra aplicación es implementar un command y censarlo en el FrontController.


Fte: http://www.madeinflex.com/2006/10/26/cairngorm-iv-frontcontroller/

No hay comentarios:

Publicar un comentario