http://migueljaque.com
Notas sobre Metodologías Ágiles
Estás en:   Inicio Patrones Tipos de Patrones
Tipos de Patrones PDF Imprimir E-mail
Sábado, 19 de Abril de 2008 08:07

Hoy, podemos encontrar literalmente miles de patrones definidos. Resulta imposible para un programador conocerlos todos, ni mucho menos probarlos o valorarlos. Así que necesitamos una clasificación sencilla (aunque incompleta) para al menos poder situarlos.

Otros Tipos de Patrones

Generalmente, cuando hablamos de patrones, hablamos de "Patrones de Diseño", ¿hay otros tipos de patrones?

Lo cierto es que el concepto de patrón como una buena idea para resolver un problema, se aplica en ámbitos muy diversos. Hay patrones para información visual, patrones pedagógicos, patrones de costura... pero incluso reduciéndolo sólo al ámbito del software tenemos:

  • Patrones de Arquitectura: Soluciones probadas para estructurar los componentes, como son Modelo-Vista-Controlador, arquitectura en tres capas, peer to peer, arquitectura orientada a servicios...
  • Patrones Web: Soluciones probadas para la creación de sitios web, como son la maquetación en tres columnas, efectos de rollover, estructuras de blog...
  • Patrones de Diseño: Las soluciones probadas para el diseño de software. En estas nos vamos a centrar.
  • Patrones de Programación: Soluciones específicas para algoritmos y estructuras de control, como son algoritmos de ordenación, procedimientos de recursión e iteración, etc.
  • Patrones de Refactorización: Soluciones para simplificar el código, como la variable explicativa, extracción de métodos, sobrecarga de constructores, etc.

Clasificación de Patrones de Diseño

Podemos agrupar los patrones de diseño según el problema que abordan:

  • Creacionales: Abordan problemas de creación de objetos. Entre estos patrones están la factoría, la factoría abstracta, el singleton, etc.
  • Estructurales: Abordan problemas sobre relaciones entre entidades. Entre ellos: la fachada, el adaptador, el decorador...
  • De Comportamiento: Abordan problemas de comunicación entre entidades. Por ejemplo observador, estrategia, plantilla, etc.

Seguramente esta clasificación puede extenderse ad-infinitum, pero estas son las categorías principales.

Una Clasificación Sencilla e Incompleta

Pero necesitamos algo más fácil. Con la clasificación anterior podríamos pasar días discutiendo si un patrón es estructural o de comportamiento y encontraríamos cientos de patrones que pueden ser clasificados en varias categorías o que requieren otras nuevas. En definitiva, no resultaría fácil encontrar patrones que, al fin y al cabo, es nuestro objetivo.

Así que, en estas páginas he optado por una clasificación mucho más sencilla y mucho más incompleta, clasificaré los patrones por su objetivo. Tenemos un objetivo único: reducir el riesgo del proyecto. Y para ello, atacamos a los dos componentes del riesgo: los cambios y los errores.

Así nos encontramos con Patrones Para Facilitar el Cambio y Patrones para Prevenir Errores.

Además, utilizaremos también el origen de cada patrón. Uno de los principales libros sobre patrones de software es Design Patterns: Elements of Reusable Object-Oriented Software, escrito por Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides, desde entonces conocidos como "La Banda de los Cuatro" o GoF (Gang of Four).

También es relevante el libre "Applying UML And Patterns" de Craig Larman. Los patrones que define Larman tienen su origen en GRASP (General Responsability Assignment Software Principles) y muchos de ellos son más "principios" para orientar la toma de decisiones de diseño que patrones (soluciones directamente aplicables).

En resumen, nos encontraremos con patrones GoF, patrones GRASP y Principios Generales.

Referencias

Dessign Patterns: Artículo sobre Patrones de Diseño en Wikipedia.

Architectural Patterns: Artículo sobre Patrones de Arquitectura en Wikipedia.

Patterns and Software: Essential Concepts and Terminology - Introducción a los patrones por Brad Appleton.

 

Apoyo a la Cultura Libre: Si eres legal ¡¡COMPARTE!!