You are on page 1of 6

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

Un patrón de diseño ofrece una solución abstracta a un problema de diseño que


aparece muy frecuentemente, expresada mediante un conjunto de relaciones e
interrelaciones entre componentes.

Elementos de un patrón de diseño


 Nombre: Describe el patrón
 Problema: Explica el problema y su contexto
 Solución: Describe los elementos del diseño, sus relaciones,
responsabilidad y colaboraciones.
 Consecuencias: Resultados, ventajas e inconvenientes de aplicar el
patrón.

Tipos de patrones de diseño


Los patrones de diseño varían en su granularidad y nivel de abstracción, las
clasificaciones más conocidas son las siguientes:
 Patrones POSA (Arquitectura de Software Orientada a Patrones)
 Patrones GRAPS (Patrones de Software de Asignación de Responsabilidad
general)
 Patrones GoF (Gangs of Four)
A continuación se presenta la clasificación GoF..
Clasificación de patrones de diseño GoF
Este tipo de clasificación tiene dos subclasificaciones: según su propósito y
según su ámbito.
 Según su propósito:
o De creación: Relacionados con el proceso de creación de objetos.
o Estructurales: Tratan la composición de clases y objetos
o De comportamiento: Caracterizan el modelo en que las clases y
objetos interactúan y se reparten la responsabilidad.
o Según su ámbito: Especifica si el patrón se aplica principalmente a
clases o a objetos.
Patrones de Creación

1. Factory Method
Crea tipo de subclases en base a una clase
Define una interfaz para crear un objeto, pero permite a las subclases decidir la
clase a instanciar: instanciación diferida a las subclases

Aplicabilidad
 Una clase no puede prever la clase de objetos que debe crear
 Una clase desea que sus subclases especifiquen los objetos que debe crear
 Una clase delega responsabilidad a una entre varias subclases auxiliares
(helper) y se quiere localizar el conocimiento de en qué subclase auxiliar
concreta delega
Consecuencias
 Evita ligar un código a clases específicas de la aplicación
 Puede suceder que las subclases de Creador sólo se crean con el fin de la
creación de objetos
 Mayor flexibilidad en la creación: subclases ofreciendo versiones extendidas
de un objeto
 Conecta jerarquías de clases paralelas

2. Singleton
Una clase tiene una unica instancia y un unico acceso global
Asegurar que una clase tiene una única instancia y asegurar un
acceso global
Aplicabilidad
 Debe existir una única instancia de una clase, accesible a los
clientes desde un punto conocido
 Debe ser extensible mediante herencia y los clientes deben
ser capaces de usar una instancia extendida sin modificar su
código
Consecuencias
 Acceso controlado a la única instancia
 Espacio de nombres reducido. Evita usar variables globales
 Permite generalizar a un número variable de instancias
 Más flexible que las operaciones de clase
 La clase Singleton puede tener subclases
Patrones Estructurales
1. Decorator
Asigna responsabilidades adicionales a un objeto dinámicamente
Asigna responsabilidades adicionales a un objeto dinámicamente. Alternativa
flexible a la herencia para extender la funcionalidad.

Aplicabilidad
 Añadir objetos individuales de forma dinámica y transparente
 Responsabilidades de un objeto pueden ser retiradas
 Cuando la extensión mediante la herencia no es viable
Consecuencias
 Más flexibilidad que la herencia estática: se pueden añadir y eliminar
responsabilidades en tiempo de ejecución
 Evita que las clases de la parte alta de la jerarquía estén cargadas de
funciones
 Un decorador y su componente no son idénticos
 Sistemas formados por muchos objetos pequeños. Dificultad de
comprensión y depuración

2. Proxy
Proporciona un representante o sustituto de un objeto para controlar el acceso
a éste.
Proporciona un representante o sustituto (surrogate) de un objeto para
controlar el acceso a éste

Aplicabilidad
 Siempre que hay necesidad de una referencia a un objeto más
versátil o sofisticada que un simple puntero. Situaciones comunes:
- Proxy acceso remoto (representante local de un objeto en otro
espacio de direcciones)
- Proxy virtual (crea objetos costosos sobre demanda)
- Proxy para protección (controlar acceso al objeto original)
- Referencia inteligente (sustituto de un puntero que lleva a cabo
operaciones adicionales)

Consecuencias
 Un proxy remoto oculta el hecho que un objeto reside en un espacio de
direcciones diferentes
 Un proxy virtual puede realizar optimizaciones tales como crear un objeto
por encargo
 Tanto proxies de Métodos de desarrollo de software 126 los protección
como las referencias inteligentes, permiten realizar tareas de mantenimiento
adicionales cuando se accede a un objeto
Patrones de comportamiento
1. Mediator
Define un objeto que encapsula como interaccionan un conjunto de objetos
Define un objeto que encapsula como interaccionan un conjunto de objetos.
Favorece un bajo acoplamiento, liberando a los objetos de referenciarse unos a
otros explícitamente, y permite variar la interacción de manera independiente

Aplicabilidad
 Un conjunto de objetos se comunica entre sí de una forma bien definida,
pero compleja. Las interdependencias resultantes están poco estructuradas
y son difíciles de comprender
 Es difícil reutilizar un objeto porque se refiere a otros muchos objetos con
los que se comunica. Un comportamiento que está distribuido entre varias
clases debería ser adaptado sin crear muchas subclases

Consecuencias
 Reduce la herencia
 Desacopla a los colegas
 Simplifica los protocolos de los objetos
 Abstrae cómo cooperan los objetos
 Centraliza el control

2. Observer
Define una dependencia de uno a muchos entre objetos, de forma que cuando
un objeto cambie de estado se notifique y se actualicen todos los objetos que
dependen de él.
Define una dependencia de uno a muchos entre objetos, de forma que cuando
un objeto cambie de estado se notifique y se actualicen todos los objetos que
dependen de él.

Aplicabilidad
 Cuando una abstracción tiene dos aspectos y uno depende de otro
 Cuando un cambio de estado en un objeto requiere cambios en otros
objetos, y no sabemos cuántos objetos necesitan cambiarse
 Cuando un objeto debe ser capaz de notificar algo a otros objetos, sin hacer
asunciones sobre quiénes son estos objetos

Consecuencias
 Permite modificar independientemente sujetos y observers
 Acoplamiento abstracto entre Sujeto y Observer
 Capacidad de comunicación mediante difusión
 Actualizaciones inesperadas
3. State
Permite a un objeto cambiar su comportamiento cuando cambia su estado. El
objeto parece cambiar de clase
Permite a un objeto cambiar su comportamiento cuando cambia su estado. El
objeto parece cambiar de clase

Aplicabilidad
 El comportamiento del objeto depende de su estado, y debe cambiar su
comportamiento en tiempo de ejecución dependiendo de su estado
 Las operaciones tienen grandes sentencias condicionales (normalmente
estructuras CASE) que dependen del estado del objeto, que se representa
por uno o más constantes de tipo enumerado

Consecuencias
 Localiza el comportamiento dependiente al estado y lo divide entre
diferentes estados
 Hace explícitas las transiciones entre estados
 Los objetos State pueden ser compartidos

Página 95 en adelante:
http://avellano.usal.es/~mmoreno/ASTema3.pdf

You might also like