Skip to content

Patrones de diseño

¿Qué es un patrón de diseño?

Es una solución habitual a problemas que ocurren con frecuencia en el diseño de software. El patrón no es una porción específica de código, sino un concepto general para resolver un problema particular.

El patrón a diferencia de un algoritmo, es una descripción de más alto nivel de una solución. El código de un mismo patrón puede ser diferente en dos programas distintos.

¿En qué consiste el patrón?

Se describen con mucha formalidad para que la gente pueda reproducirlos en distintos contextos.

Secciones que suelen estar presentes en la descripción de un patrón:

  • El propósito del patrón explica brevemente el problema y la solución.
  • La motivación explica en más detalle el problema y la solución que brinda el patón.
  • La estructura de las clases que muestra cada una de las partes del patrón y el modo en que se relacionan.
  • El ejemplo de código en uno de los lenguajes de programación populares facilita la asimilación de la idea que se esconde tras el patrón.

Clasificación de los patrones

Los patrones de diseño varían en su complejidad, nivel de detalle y escala de apicabilidad.

Los patrones más básicos y de más bajo nivel se llaman idioms. (Se aplican a un único lenguaje de programación)

Los patrones más universales de más alto nivel se llaman patrones de arquitectura. (Se pueden utilizar para diseñar la arquitectura de una aplicación completa).

Todos los patrones pueden clasificarse por su propósito:

  • Los patrones creacionales proporcionan mecanismos de creación de objetos que incrementan la flexibilidad y la reutilización de código existente.

  • Los patrones estructurales explican cómo ensamblar objetos y clases en estructuras más grandes a la vez que se mantiene la flexibilidad y eficiencia de la estructura.

  • Los patrones de comportamiento se encargan de una comunicación efectiva y la asignación de responsabilidades entre objetos.

Catálogo de patrones

Patrones creacionales

Factory Method

Propósito:

Proporciona una interfaz para crear objetos en una superclase, mientras permite a las subclases alterar el tipo de objeto que se crearán.