PaTrOnEs, PaTrOnEs…

tidal pattern 1
Tidal pattern 1 , de David

En la ingeniería de software, existen ciertas plantillas que sirven como guía para resolver problemas comunes dentro del software; a estas plantillas se le llaman Patrones de Diseño.

Los patrones de diseño aceleran en gran medida el proceso de creación de software al proponer paradigmas probados y métodos establecidos.

Además, el hacer uso de patrones de diseño permite a los desarrolladores familiarizarse con la forma de escribir haciendo más legible el código.

Existen diferentes tipos de patrones de diseño: Creacionales, Estructurales y De comportamiento.

creation
Creation, de Mike Brown.

Creacionales: Estos patrones de diseño son enteramente centrados en la creación de clases y objetos. Algunos ejemplos de este tipo son:

  • Abstract Factory: Crea una instancia de diversas familias de clases.
  • Builder: Separa la construcción de los objetos de su representación.
  • Factory Method: Crea una instancia de diversas clases derivadas.
  • Object Pool: Recilca los objetos en desuso para evitar los costos de adquisicion y liberación de recursos.
  • Prototype: Copia o clona completamente una instancia inicializada.
  • Singleaton: Clases donde solo una instancia puede existir.
Structures
Structures, de Aanomis

Estructurales: Estos patrones de diseño están centrados en organizar clases y objetos de una estructura t darles funcionalidad. Algunos ejemplos son:

  • Adapter: Empareja interfaces de diferentes clases.
  • Bridge: Separa la interfaz de un objeto de su implementación.
  • Composite: Usa una estructura de árbol para objetos simples y compuestos.
  • Decorator: Añade responsabilidades diatónicamente a objetos.
  • Facade: Una sola clase que representa todo un sub sistema.
  • Flyweight: Una instancia delicada para el compartido eficiente.
  • Private Class Data: Restringe el acceso y las modificaciones.
  • Proxy: Objetos que representan otros objetos.
Behaviour 2
Behaviour 2, de Taz etc.

De Comportamiento: Identifican patrones comunes de comunicación entre objetos y los descifra. Algunos ejemplos son:

  • Chain of responsability: Pasar las solicitudes entre una cadena de objetos.
  • Command: Encapsular solicitudes como objetos.
  • Interpreter: Hacer uso de elementos del lenguaje en el programa.
  • Iterator: Accede subsecuentemente a los elementos de una colección.
  • Mediator: Comunicación simplificada entre clases.
  • Null Object: Actúa como valor por defecto de un objeto.
  • Observer: Notificar el objeto a un número de clases.
  • State: Altera el comportamiento del objeto cuando este cambia de estado.
  • Strategy: Encapsula el algoritmo dentro de la clase.
  • Template method: Define el número exacto de pasos de un algoritmo a una subclase.
  • Visitor: Define operaciones a una clase sin alterarla.

Para tener un vistazo más profundo en los diferentes patrones de diseño, recomiendo encarecidamente la siguiente playlist de Christoper Okhravi, en donde explica detalladamente muchos de los patrones de diseño mencionados aquí.

Playlist Design Patterns in Object Oriented Programming de Christopher Okhravi.

Pero no todo es miel sobre hojuelas, existen algunas criticas hacia el uso de los patrones de diseño. Algunas de las criticas principales son:

  • Carece de fundamentos formales.
  • No son muy diferentes a otras formas de abstracción.
  • Puede ocasionar soluciones ineficientes.
  • No es bueno «copiar» conceptos, sino referenciarlos, y al referenciarlos unicamente ya no serían patrones.

Referencias

GeekforGeeks (s.f) Design Patterns Set 1 (Introduction). https://www.geeksforgeeks.org/design-patterns-set-1-introduction/

Source Makinf (s.f) Design Patterns. https://sourcemaking.com/design_patterns

Deja un comentario