Propósito
Permite a un objeto cambiar su comportamiento cuando cambia su estado. El objeto parece cambiar de clase.
Aplicabilidad
Use el patrón State cuando el comportamiento del objeto depende de su estado, y debe cambiar su comportamiento en tiempo de ejecución dependiendo de su estado, cuando las operaciones tienen grandes estructuras Case que dependen del estado del objeto, que es representado por uno o más constantes de tipo enumerado.
Implementación
El patrón State necesita de los siguientes elementos:
• Context: Este integrante define la interfaz con el cliente. Mantiene una instancia de ConcreteState (Estado Concreto) que define su estado actual.
• State: Define una interfaz para el encapsulamiento de la responsabilidades asociadas con un estado particular de Context.
• ConcreteState: Cada una de estas subclases implementa el comportamiento o responsabilidad de Context.
Ventajas e Inconvenientes
Coloca todo el comportamiento asociado a un particular estado en una clase, lo cual hace muchos más manejable los estados de los objetos. Presenta un reemplazo de sentencias Case por subclases, esto ayuda a evitar estados inconsistentes, lo cual hace que transiciones de estado son más explícitas. Incrementa el número de objetos, donde los objetos estado pueden ser Singleton.
Patrones Relacionados
• Flyweight: Los estados pueden ser compartidos usando el patrón Flyweight.
• Singleton: La mayoría de los estados son Singleton especialmente cuando son Flyweight.
viernes, 29 de mayo de 2009
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario