viernes, 29 de mayo de 2009

State

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.

No hay comentarios:

Publicar un comentario