Patrones de Diseño

Patrones de Diseño

Patrones de diseño de comportamiento

Chain Of Responsability El objetivo del patrón es permitir que una petición pase a través de una cadena de diferentes objetos que tendrán la oportunidad de manejar la petición. El emisor no necesita saber que objeto va a manejar la petición y el objeto de la cadena no necesita saber quien en el emisor.
Command Encapsula una petición en un objeto, permitiendo así parametrizar a los clientes con diferentes peticiones, hacer cola o llevar un registro de peticiones, y poder deshacer las operaciones.
Iterator Se utiliza para recorrer y acceder a los elementos de una colección o estructura de datos u objetos sin conocer detalles de la implementación de dicha estructura.
Mediator Define un objeto que encapsula como interactúan una serie de objetos
Memento El patrón Memento tiene como objetivo salvaguardar y restablecer el estado de un objeto sin violar la encapsulación.
Observer Tiene como objetivo construir una dependencia entre un sujeto y los observadores de modo que cada modificación del sujeto sea notificada a los observadores para que puedan actualizar su estado.
State El propósito de este patrón es permitir a un objeto cambiar su comportamiento cuando cambia su estado.
Strategy Define una familia de algoritmos, encapsula cada uno de ellos y los hace intercambiables. Permite que un algoritmo varíe independientemente de los clientes que lo usan.
Template Method Define en una operación el esqueleto del algoritmo, delegando en las subclases algunos de sus pasos. Permiten que las subclases redefinan ciertos pasos de un algoritmo sin cambiar su estructura.

 

Patrones de diseño creacionales

Su finalidad es la de abstraer los mecanismos de creación de objetos. Un sistema que utilice estos patrones se vuelve independiente de la forma en que se crean los objetos, en particular, de los mecanismos de instanciación de las clases concretas.
Estos patrones encapsulan el uso de clases concretas y favorecen así el uso de las interfaces en las relaciones entre objetos, aumentando las capacidades de abstracción en el diseño global del sistema.
Utilizan la flexibilidad que da el polimorfismo: permitir cambiar a implementaciones concretas en tiempo de ejecución.

Abstract Factory Tiene como objetivo la creación de objetos agrupados en familias sin tener que conocer las clases concretas destinadas a la creacion de estos objetos. Proporciona una interfaz para la creación.
Builder El objetivo del patrón Builder es abstraer la construcción de objetos complejos de su implementación, de modo que un cliente pueda crear diferentes objetos complejos sin tener que preocuparse de las diferencias en su implantación.
Factory Method En este patrón el objeto creado no se encuentra vinculado a la clase que lo crea. En su lugar el cliente hace una petición mediante una fabrica, luego la fábrica crea el objeto requerido. De esta manera se mantiene un bajo acoplamiento.
Prototype El patron prototype es una técnica para replicar objetos instanciados. Nuevos objetos son creados copiando instancias prototípicas.
Su objetivo es reducir el costo de instanciar nuevos objetos utilizando la clonacion y evitar múltiples jerarquías de clases (número considerable de factorías)
Singleton Su función es garantizar que por una clase se cree una única instancia y que todos los usuarios de ese objeto accedan únicamente a esa instancia. Para esto se ofrece una instancia
de una clase y un punto de acceso unificado a la misma.

Patrones de diseño estructurales

Adapter El objetivo del patrón Adapter es convertir la interfaz de una clase existente en la interfaz esperada por los clientes también existentes de modo que puedan trabajar de manera conjunta. Se trata de conferir a una clase existente una nueva interfaz para responder a las necesidades de los clientes.
Bridge Crea una separación, o puente, entre una abstracción y su implementación, logrando que ambas puedan desarrollarse en paralelo sin que los cambios impacten.
Surge, por ejemplo, con la necesidad de contar con diferentes implementaciones para diferentes
plataformas de una misma jerarquía de clases.
Composite El objetivo del patrón Composite es ofrecer un marco de diseño de una composición de objetos de profundidad variable, diseño que estará basado en un árbol.
Decorator El objetivo del patrón Decorator es agregar dinámicamente funcionalidades suplementarias a un objeto. Esta agregación de funcionalidades no modifica la interfaz del objeto y es transparente de cara a los clientes.
Facade Proporciona una interfaz unificada para un conjunto de interfaces de un subsistema. Define una interfaz de alto nivel que hace el que el subsistema sea más fácil de usar.
Proxy El patrón Proxy tiene como objetivo el diseño de un objeto que sustituye a otro objeto (el sujeto) y que controla el acceso.
El objeto que realiza la sustitución posee la misma interfaz que el sujeto, volviendo la sustitución transparente de cara a los clientes.