La arquitectura MVC (Model/View/Controller) fue introducida
como parte de la versión Smalltalk-80 del lenguaje de programación
Smalltalk. Fue diseñada para reducir el esfuerzo de programación
necesario en la implementación de sistemas múltiples y sincronizados
de los mismos datos. Sus características principales son
que el Modelo, las Vistas y los Controladores se tratan como entidades
separadas; esto hace que cualquier cambio producido en el Modelo
se refleje automáticamente en cada una de las Vistas.
Además del programa ejemplo que hemos presentado al principio
y que posteriormente implementaremos, este modelo de arquitectura
se puede emplear en sistemas de representación gráfica
de datos, como se ha citado, o en sistemas CAD, en donde se presentan
partes del diseño con diferente escala de aumento, en ventanas
separadas.
En la figura siguiente, vemos la arquitectura MVC en su forma
más general. Hay un Modelo, múltiples Controladores
que manipulan ese Modelo, y hay varias Vistas de los datos del
Modelo, que cambian cuando cambia el estado de ese Modelo.
Este modelo de arquitectura presenta varias ventajas:
Al incorporar el modelo de arquitectura MVC a un diseño,
las piezas de un programa se pueden construir por separado y luego
unirlas en tiempo de ejecución. Si uno de los Componentes,
posteriormente, se observa que funciona mal, puede reemplazarse
sin que las otras piezas se vean afectadas. Este escenario contrasta
con la aproximación monolítica típica de
muchos programas Java. Todos tienen un Frame que contiene
todos los elementos, un controlador de eventos, un montón
de cálculos y la presentación del resultado. Ante
esta perspectiva, hacer un cambio aquí no es nada trivial.
El Modelo es el objeto que representa los datos del programa.
Maneja los datos y controla todas sus transformaciones. El Modelo
no tiene conocimiento específico de los Controladores o
de las Vistas, ni siquiera contiene referencias a ellos. Es el
propio sistema el que tiene encomendada la responsabilidad de
mantener enlaces entre el Modelo y sus Vistas, y notificar a las
Vistas cuando cambia el Modelo.
La Vista es el objeto que maneja la presentación
visual de los datos representados por el Modelo. Genera una representación
visual del Modelo y muestra los datos al usuario. Interactúa
con el Modelo a través de una referencia al propio Modelo.
El Controlador es el objeto que proporciona significado
a las ordenes del usuario, actuando sobre los datos representados
por el Modelo. Cuando se realiza algún cambio, entra en
acción, bien sea por cambios en la información del
Modelo o por alteraciones de la Vista. Interactúa con el
Modelo a través de una referencia al propio Modelo.
Vamos a mostrar un ejemplo concreto. Consideremos como tal el
sistema descrito en la introducción a este capítulo,
una pieza geométrica en tres dimensiones, que representamos
en la figura siguiente:
En este caso, la pieza central de la escena en tres dimensiones
es el Modelo. El Modelo es una descripción matemática
de los vértices y las caras que componen la escena. Los
datos que describen cada vértice o cara pueden modificarse
(quizás como resultado de una acción del usuario,
o una distorsión de la escena, o un algoritmo de sombreado).
Sin embargo, no tiene noción del punto de vista, método
de presentación, perspectiva o fuente de luz. El Modelo
es una representación pura de los elementos que componen
la escena.
La porción del programa que transforma los datos dentro
del Modelo en una presentación gráfica es la Vista.
La Vista incorpora la visión del Modelo a la escena; es
la representación gráfica de la escena desde un
punto de vista determinado, bajo condiciones de iluminación
determinadas.
El Controlador sabe que puede hacer el Modelo e implementa el
interface de usuario que permite iniciar la acción. En
este ejemplo, un panel de datos de entrada es lo único
que se necesita, para permitir añadir, modificar o borrar
vértices o caras de la figura.
|
[Anterior] [Indice] [Siguiente] |