Hemos hablado en anteriores ocasiones de una serie de patrones de diseño que utilizamos para implementar la capa modelo de cyberHotel en las distintas iteraciones, vamos a hablar ahora un poco de los patrones de diseño comunes utilizados para la capa controlador, para la capa vista y para la interacción vista-controlador.
Dado que la aplicación se divide en tres capas siguiendo el patrón arquitectónico Modelo-Vista-Controlador, el Modelo debe de estar totalmente desacoplado del conjunto Vista-Controlador, pues si en un futuro se quieren definir distintas vistas (web, interfaz de PDA, …) no será necesario modificar para nada la lógica de negocio que se encuentra en el modelo. Es decir, tendremos un único modelo al que se puede acceder desde distintos tipos de vistas.
La separación entre Vista y Controlador no es tan acusada, pues cada vista suele llevar asociado su propio controlador dependiendo de la naturaleza de esta, ya que no sería lo mismo un controlador para un entorno de ventanas que para un conjunto de páginas web hechas con JSP por ejemplo, por eso no se reutiliza la capa Controlador. Si bien, la capa Controlador accede al modelo a través de la interfaz que proporcionan las fachadas y conoce determinados objetos como los POJO’s y las propias fachadas, la capa Vista no trabaja en absoluto en términos de objetos de la capa Modelo, por este motivo se utilizarán patrones que permitan establecer un protocolo de comunicación entre Controlador y Vista.
Dado que la Vista es una interfaz de ventanas desarrollada en Swing, tanto esta capa como el Controlador están desarrollados íntegramente en Java utilizando patrones de diseño que son comunes a todas las iteraciones.