Catálogo de Modismos y Patrones

Esta receta incluye únicamente una clasificación de patrones a modo de catálogo y una pequeña descripción de cada uno. Desde aquí enlazaré las recetas específicas para cada patrón.

Creación de objetos

Forma canónica ortodoxa

En los lenguajes que lo soportan (C++), permite que una clase definida por el usuario se comporte como un tipo concreto de dato, es decir, como un tipo de dato “empotrado” (built-in) proporcionado por el lenguaje.

Abstract Factory

Es un mecanismo para encapsular un grupo de factorías concretas. Permite crear objetos sin necesidad de conocer la clase concreta en tiempo de compilación (Definición)

Builder

Se usa para construir objetos complejos, a menudo como una serie de pasos, pero desacoplando la representación concreta. (Definición)

Factory Method

También llamado “constructor virtual”. Es una interfaz para la creación de objetos, pero delega a las subclases, qué clase utilizar. (Definición)

Prototype

Permite crear objetos a partir de otros que sirven de prototipos. A menudo se emplea como medio de construcción en factorìas. (Definición)

Singleton

Garantiza que la aplicación sólo pueda crear una instancia de una clase dada. Intentos posteriores de crear nuevos objetos devuelven siempre la instancia original. (Definición)

Smart Pointer

Es una clase que se utiliza como si fuera un puntero pero que añade funcionalidad adicional. La más común e importante es que libera automáticamente la memoria dinámica del objeto al que apunta (Definición)

Estructurales

Composición de clases y objetos

Adapter

Bridge

Composite

Decorator

Facade

Flyweight

El peso mosca es un patrón muy útil en aplicaciones que utilizan muchos objetos parecidos o idénticos. El objetivo es compartir parte del estado del objeto. Cuando varias instancias comporten los mismos valores para sus atributos (tamaño, color, forma, etc.) realmente el objeto solo se crea una vez y las siguientes instancias referencian el estado del objeto existente (Definición).

Proxy

Data Mapper

Desacopla una clase de modelo (la que mantiene los datos en memoria) de su persistencia. Se utiliza una clase adicional que realiza la operaciones sobre la la BD Esto permite que los aspectos de la persistencia puedan cambiar en el futuro sin afectar a la lógica de la aplicación. La persistencia puede estar basada en ficheros, en una BD o incluso mediante un agente remoto sin que eso tenga consecuencias o implique hacer cambios en las clases de la capa de negocio. (Definición)

De comportamiento

Interacción entre clases u objetos y sistemas para asignar responsabilidades.

Chain of Responsability

Command

Interpreter

Iterator

Mediator

Memento

Observer

State

Strategy

Template Method

Dado un conjunto de subclases, la superclase puede expresar (mediante un método) un algoritmo a base de invocaciones a otros métodos de la clase, que actúan como primitivas. Las subclases puede redefinir esos métodos-primitiva para cambiar la funcionalidad pero la secuencia de pasos es la misma para todas ellas. El algoritmo no tiene porqué ser estático, puede estar dirigido por un fichero de entrada (un XML, un bytecode, etc.) que indique qué primitiva debe invocarse en cada momento. (Definición)

Visitor

Model-View-Controller

Aplicaciones concurrentes

Reactor

Permite gestionar múltiples eventos asíncronos utilizando un flujo único de ejecución.

Proactor

Asynchronous Completion Token

Acceptor-Connector

Guard

Interfaz segura para multi-hilos

Aviso de hecho

Objetos activos

Monitores

Mitad-síncrono, mitad-asíncrono

Líder-y-Seguidores

Referencias