lunes, 21 de mayo de 2012

Modelo-Vista-Controlador

El Modelo Vista Controlador es un patrón de arquitectura y es un método de diseño que organiza la interfaz humano-computadora para las aplicaciones de software, podemos decir que este paradigma, lo que hace es dividir el panel de operador en un modelo, el cual son los datos de la aplicación, por otra parte, la vista, que es la forma en que el usuario ve el sistema.

El propósito de muchos sistemas o software es para recuperar datos desde una base de datos y mostrarlo al usuario, después de que el usuario cambia los datos, el sistema almacena los cambios en la base de datos, esto debido a que el fluho de información se encuntra entre la base y la interfaz de usuario, pero muchas veces existe un problema en el que la interfaz de usuario tiende a cambiar mucho más frecuentemente que el sistema de almacenamiento de datos, otro problema por ejemplo es el acoplamiento de datos y elementos de la interfaz de usuario es que las aplicaciones tienden a cambiar de colores o logos, sería un desastre tener que cambiar uno por uno, entonces, como podemos hacer que la funcionalidad de la interfaz de usuario de una aplicación se pueda modificar fácilmente las partes individuales, es aquí donde entra el modelo-vista-controlador.

 El Modelo-Vista-Controlador (MVC) separa el modelo de la presentación y las acciones en la entrada del usuario en 3 clases separadas.
  • Modelo: El modelo maneja el comportamiento y los datos de la aplicación, respondiendo a las solicitudes de información acerca de su estado, responde a las intrucciones para cambiar el estado.
  • Vista: La vista gestiona la visualización de la información
  • Controlador: El controlador interpreta las entradas, por ejemplo, en el caso de iOS, los toques que le hacemos a las pantallas, informando al modelo el cambiar según sea apropiado.

 Es importante recalcar que tanto la vista y el controlador dependen directamente del modelo, como vemos en el diagrama, sin embargo, el modelo no depende de la vista ni del controlador, entonces esta es una de las principales ventajas de la separación ya que permite que el modelo que se contruyó y probó independiente de la presentación visual, la separación entre la vista y el controlador es secundario en muchas aplicaciones, por lo tanto el Modelo Vista Controlador es un patrón de diseño fundamental para la separación de la lógica de la interfaz de usuario y de la lógica del trabajo.

El MVC en iOS, los View controllers son una parte fundamental entre los datos de una aplicación y su aspecto visual, cada vez que una aplicación de iOS muestra una interfaz de usuario, el contenido que se muestra es manejado por el view controller o un grupo de controladores que coordina la vista con los demás, proporcionando un esqueleto para contruir aplicaciones en iOS.

iOS proporciona muchas funciones integradas en las clases de controlador de vista para apoyar elementos estandar de interfaz de usuario, como la navegación y barras de tabulación.


En MVC, cada controlador posee una vista y un modelo, de hecho es uno de los patrones más antiguos en la ingeniería de software.





¿Cuando usar MVC?
  • Cuando el código se mezcla entre sí, es dificl para nostros desarrolladores trabajar usando una fusión extraña porque no existe una división clara entre la interfaz y los datos. 
  • La interfaz, la lógica de la aplicación y los datos son poco probable que sean reutilizable en otras aplicaciones ya que la combinación de los tres es demasiado específicas
  • La aplicación es difícil de extender y la adición de caractrísticas requiere de trabajo en torno al código existente, el desarrollador necesita que trabajar con todo el código para poder agregar características, aunque muchas no esten relacionadas entre si.
En la suite de Apple para iOS el desarrollo de aplicaciones para el sistema, el diseño de MVC se da de una forma "natural", ya que por ejemplo, cuando estamos haciendo los proyectos y empezamos a programar, se nos guiará en el uso de patrones de disño MVC automáticamente.

Espero que esta entrada nos ayude a entender como funciona el MVC y diseñar para futuros posteriores aplicaciones utilizando este tipo de patrones.




1 comentario: