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:
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.)
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.
No hay comentarios:
Publicar un comentario