También llamado patrón de máquina de estados. Al definir diferentes clases de estado para encapsular comportamientos relacionados con estados específicos y transferir la lógica de juicio de estado a una serie de clases que representan diferentes estados, se simplifica la lógica de juicio compleja.
El patrón de estado separa estado y comportamiento, lo que permite que un objeto cambie su comportamiento cuando cambia su estado interno.
Cada estado corresponde a una subclase, distribuyendo así la lógica de transición de estado a las subclases de estado, reduciendo la interdependencia.
El cliente generalmente no interactúa directamente con el objeto de estado, sino que interactúa con el objeto de estado a través de la clase de entorno (Contexto).
Escena aplicable
El comportamiento de un objeto depende de su estado y debe cambiar su comportamiento en tiempo de ejecución según el estado.
Una operación contiene una enorme estructura de múltiples ramas, y estas ramas están determinadas por el estado del objeto.
Ejemplo estándar
En el diagrama de estructura del patrón de estado, generalmente contiene los siguientes roles:
Contexto (clase de entorno): también llamada clase de contexto, es un objeto con múltiples estados. Mantenga una instancia de la clase de estado abstracto Estado en la clase de entorno, que define el estado actual.
Estado (clase de estado abstracto): se utiliza para definir una interfaz para encapsular el comportamiento relacionado con un estado específico de la clase de entorno. Los métodos correspondientes a varios estados se declaran en la clase de estado abstracto y se implementan en subclases.
ConcreteState (clase de estado concreto): es una subclase de la clase de estado abstracto. Cada subclase implementa un comportamiento relacionado con un estado de la clase de entorno.