Patrón State

PUBLICADO: 2026-08-17
AUTOR: MANUEL PRIETO
Patrones de Diseño

💡 Ver Caso Práctico: Ejemplo Práctico del Patrón State

State (Estado) es un patrón de diseño comportamental que permite a un objeto cambiar su comportamiento cuando cambia su estado interno. El objeto parece cambiar de clase.

Propósito y Caso de Uso

Utiliza State cuando el comportamiento de un objeto dependa de su estado actual y ese comportamiento cambie en tiempo de ejecución (ej. un pedido: pendientepagadoenviadoentregado, cada uno con transiciones y reglas distintas). Evita máquinas de estado implementadas con if/switch gigantes sobre una variable de estado.

Estructura del Patrón

  1. Estado (Interfaz): Declara métodos comunes a todos los estados.
  2. Estados Concretos: Implementan el comportamiento específico de cada estado y deciden la siguiente transición.
  3. Contexto: Mantiene una referencia al estado actual y delega el comportamiento en él.
Cargando diagrama...

Flujo de Funcionamiento

  1. Delegación: El contexto invoca un método sobre su estado actual (ej. pay()).
  2. Comportamiento específico: El estado ejecuta la lógica válida para esa fase.
  3. Transición: El propio estado asigna el siguiente estado al contexto, cambiando su comportamiento futuro.

Ejemplos de Implementación Reales

Cuándo NO usarlo

Si el objeto solo tiene 2 estados simples sin transiciones complejas, un booleano o enum con un if es suficiente (YAGNIGlosarioYAGNI (You Aren't Gonna Need It)Principio de Extreme Programming (XP) que establece que un programador no debe añadir funcionalidad hasta que sea estrictamente necesario. Su objetivo es evitar la sobre-ingeniería (over-engineering), previniendo código para funcionalidades hipotéticas.Ver término completo →).