Pages - Menu

jueves, 22 de mayo de 2014

Patrones de diseño: Patrón Capas

Aquí uno de los patrones arquitectónicos más utilizados para todos tipo de aplicaciones con una envergadura considerable, el patrón capas. Este patrón, nos permite organizar nuestro código, de tal manera que evitaremos tener un gran acoplamiento entre distintas partes de nuestra aplicación. Otra ventaja añadida, es que nos permite implementar parte de la lógica de la aplicación en otra máquina.

Motivación

Imaginemos una aplicación de gestión que guarda sus datos en archivos binarios propios, y la aplicación está realizada sin usar ninguna separación entre el almacenamiento y la lógica de la aplicación. En un momento dado, quizás deseemos cambiar el almacenamiento de ficheros binarios a base de datos; en ese caso, tendríamos que cambiar prácticamente toda la aplicación, ya que en cada zona donde se quiera hacer un acceso, se tendrá que modificar el método de acceso.
El patrón capas, pretende solucionar esta situación y otras parecidas.

Estructura

La aplicación del patrón consiste en dividir las clases en grupos (o paquetes) llamados capas (en inglés tier). Estas capas, forman una estructura similar a la mostrada en la figura siguiente:
El numero de capas que se pueden usar, es variable, depende completamente del software que se quiera realizar.
En cuanto a las dependencias entre capas, estas siempre van hacia abajo. Esto nos permite reducir el acoplamiento de las capas de arriba con las de abajo, es decir, en caso de que se modifique una capa inferior, solo se deberán modificar aquellas que tengan dependencias directas, y en el caso contrario, no de deberá modificar nada.
Se pueden distinguir dos formas de aplicación:
  • Estricto: si las dependencias de una capa solo van con las siguiente.
  • No estricto: si las dependencias de una capa pueden ir con cualquiera de las inferiores.

Ventajas y Desventajas

Ventajas

  • Sólo es necesario conocer la capa superior y es posible despreocuparse de las otras capas por debajo.
  • Se pueden reemplazar capas por implementaciones alternativas de los mismos servicios básicos.
  • Se minimizan las dependencias entre capas.

Desventajas

  • Las capas extra pueden reducir el rendimiento.
  • Posibilidad de cambios en cascada (p.e. nuevo campo en la interfaz de usuario supone cambio en la base de datos y en todas las capas intermedias). 

Aplicabilidad

Normalmente el patrón capas se puede usar en aplicaciones con una complejidad con cierto grado de elevación. Para aplicaciones de gestión, es normal que se usen tres capas:
  • Capa de presentación: donde se implementa la interfaz de usuario.
  • Capa de negocio: donde se implementa la lógica de la aplicación.
  • Capa de datos o persistencia: donde se implementan los mecanismos para el almacenamiento persistente (bases de datos, ficheros binarios, ficheros de texto, XML, etc.)
En aplicaciones distribuidas, se suelen distribuir las capas en distintas máquinas, como muestra la imagen siguiente.
Según el numero de capas que contenga el cliente se le puede conocer como:
  • Cliente Ligero: si solo contiene la capa de presentación (ej. aplicaciones web).
  • Cliente Pesado: si contiene la capa de presentación y de negocio.
Este patrón, además permite usarlo junto con otros patrones arquitectónicos como el MVC, en el que la capa de presentación contiene las vistas y controladores, y la de negocio el modelo.

No hay comentarios:

Publicar un comentario