Historia
La idea de aplicar patrones de diseño al desarrollo de software nace a principios de los 80.
La principal razón para esto es que al irse produciendo programas mas complejos conviene utilizar una
metodología estandarizada en su diseño y codificación.
Su uso presenta varias ventajas:
- Si existe un patrón de diseño apto para nuestro problema se acortan los tiempos de desarrollo
- El programa creado resulta mas fácil de leer y por lo tanto de mantener.
- Si se trabaja en un equipo es mas fácil dividir las tareas a realizar
- Es mas simple modificar componentes sin afectar a todo el sistema
Y algunas desventajas:
- En programas "chicos" posiblemente se tarde más en adaptarlos a un patrón que si no se utilizara
uno.
El patrón de diseño MVC nace durante el desarrollo del
lenguaje Smalltalk durante las décadas del 70 y 80 (Smalltalk es un lenguaje de objetos puro, que
sigue utilizándose). Esto hace de MVC un patrón antiguo, pero que con algunas modificaciones llega
hasta nuestros dias con la ventaja de la experiencia obtenida con los años de uso.
Aplicando MVC en la programación web
Este patrón de diseño nos interesa debido a que lo utilizaremos durante el transcurso del curso, por
ejemplo con los frameworks React y Express.
También se encuentra en otras librerías de uso común como ser AngularJS
¿Qué funciones tiene cada componente?
Vista: Interactúa con el usuario, le muestra los datos y recibe los eventos generados por el
mismo.
Tener en cuenta que la Vista no tiene por qué ser exclusivamente visual. Puede tener salidas
auditivas y
tactiles (terminal braille, guantes VR, etc), así como también las entradas (por ej "Alexa",
lectores de
huellas, etc.)
Modelo: Se encarga del manejo de los datos, por ejemplo mediante el acceso a una base de
datos,
o a los valores obtenidos por interacción con los usuarios.
Esto puede incluir su lectura, escritura, modificación, adquisición, etc.
Algunas de sus funciones pueden estar por fuera de la aplicación web, por ejemplo un programa
externo
puede modificar la base de datos y nuestra aplicación solo leer sus valores.
Controladores: Manejan el intercambio de información entre el modelo y la vista.
Pueden transformar la información recibida para adecuarla al receptor.
Por ejemplo la vista le envía al controlador el mensaje "el usuario pulsó un botón" y el controlador le
pide al
modelo que efectúe la acción correspondiente sobre los datos. O en el sentido contrario el modelo le
informa de cambios en sus datos, y el controlador se lo comunica a la vista.
En un diseño MVC puro no hay comunicación directa entre el modelo y la vista, todo el intercambio
entre
ellos pasa por los controladores
¿Donde encuentro cada componente?
Vista: Está principalmente en las partes HTML y CSS de la página, y en las funciones
javascript
encargadas de crear y/o modificar las anteriores cuando sea necesario (por ejemplo ante cambios en
el modelo o en respuesta a una acción del usuario)
Modelo: Abarca a los elementos que contienen los datos (por ejemplo una base de datos), y el
código javascript encargado de su consulta y manipulación (normalmente lo encontraríamos casi
totalmente
en el servidor, aunque puede haber parte en el cliente)
Controladores:Se encuentra en las funciones javascript encargadas de responder a los eventos
generados tanto en la vista como en el modelo (los encontrariamos tanto en el cliente como en el
servidor).