Nombre del patrón
State
Clasificación del patrón
De comportamiento.
También conocido como
Objetcs for States.
Motivación
Permite que un objeto modifique su comportamiento cada vez que cambie su estado interno. Parecerá que cambia la clase del objeto.
Aplicabilidad
· Aplicaciones cuyos componentes cambian de estado de forma dinámica durante su ejecución.
· Aplicaciones con grandes condicionales dependientes del estado de un objeto.
Estructura
Participantes
Context
Define interfaz y mantiene una instancia con el estado actual
State
Define interfaz para el comportamiento asociado a un determinado estado del Contexto.
Subclases Concrete State
Cada subclase implementa el comportamiento asociado con un estado del contexto.
Consecuencias
Localiza el comportamiento dependiente del estado y divide dicho comportamiento en diferentes estados. Las transiciones entre estados no residen en sentencias if o swtich monolíticas, sino que se reparte entre las subclases.
Hace explícitas las transiciones entre estados. Introducir objetos separados para los diferentes estados hace que las transiciones sean más explícitas.
Los objetos Estado pueden compartirse.
Implementación
Al momento de implementar el patrón State debemos tener en cuenta:
- No queda claro quien define las transiciones entre estados.
- Una alternativa basada en tablas.
- Crear y destruir objetos estados.
- Usar herencia dinámica (sólo permitido en algunos lenguajes de programación (self) )
Usos Conocidos
Conexión TCP. Clase abstracta “Estado TCP” y derivan los diferentes estados de la conexión.
Herramientas de dibujo. Clase abstracta “herramienta” y derivan los diferentes tipos de herramientas.
Patrones relacionados
Flyweight
Singleton
Referencias Bibliográficas
Design Patterns Elements of Reusable Object-Oriented Software, GoF.
http://dmi.uib.es/~yuhua/APOO07-08/Presentation/Bridge-State.pdf
http://kybele.escet.urjc.es/documentos/SI/Patrones/20_State.ppt
http://www.ldc.usb.ve/~mgoncalves/IS2/sd07/grupo3.pdf
No hay comentarios:
Publicar un comentario