Professional Documents
Culture Documents
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