En la siguiente secuencia, vamos a describir como se realiza la interacción entre un Observador y un objeto Observable, durante la ejecución de un programa:
En primer lugar el usuario manipula un elemento del interface de usuario representado por el Controlador. Este Controlador realiza un cambio en el Modelo a través de uno de sus métodos públicos de acceso; en nuestro caso, llama a setValue().
El método público de acceso modifica el dato privado, ajusta el estado interno del Modelo y llama al método setChanged() para indicar que su estado ha cambiado. Luego llama al método notifyObservers() para notificar a los observadores que su estado no es el mismo. La llamada a este método puede realizarse en cualquier lugar, incluso desde un bucle de actualización que se esté ejecutando en otro thread.
Se llama a los métodos update() de cada Observador, indicando que hay un cambio en el estado del objeto que estaban observando. El Observador accede entonces a los datos del Modelo a través del método público del Observable y actualiza las Vistas.
EJEMPLO DE APLICACION MVC
En el ejemplo siguiente, vemos como colaboran juntos Observador y Observable en la arquitectura MVC: el Modelo de este ejemplo es muy simple. Su estado interno consta de un valor entero. Este valor, o estado, es manipulado exclusivamente a través de métodos públicos de acceso. El código del modelo se encuentra implementado en ValorObservable.java.
Inicialmente, hemos escrito una clase simple de Vista/Controlador. La clase combina las características de una Vista (presenta el valor que corresponde al estado actual del Modelo) y un Controlador (permite al usuario introducir un nuevo valor para alterar el estado del Modelo).
El código se encuentra en el fichero TextoObservador.java. Podemos crear instancias de esta vista pulsando el botón superior que aparece en el applet.A través de este diseño utilizando la arquitectura MVC (en lugar de colocar el código para que el Modelo, la Vista y el Controlador de texto en una clase monolítica), el sistema puede ser fácilmente rediseñado para manejar otra Vista y otro Controlador.
En este caso, hemos visto una clase Vista/Controlador con una barra de desplazamiento. La posición del marcador en la barra representa el valor actual que corresponde con el estado del Modelo y puede ser alterado a través de movimientos del marcador sobre la barra por acción del usuario. El código de esta clase se encuentra en BarraObservador.java. Se pueden crear instancias de esta clase pulsando el botón inferior del applet de esta página.
No hay comentarios:
Publicar un comentario