Skip to main content

Inicia sesión en CleanKata

Sigue tu progreso, gana XP y desbloquea todas las lecciones.

Al iniciar sesión aceptas nuestros Términos de uso y Política de privacidad.

Patrones de Diseño80 XP8 min

State: Comportamiento Basado en Estado

Permite que un objeto altere su comportamiento cuando su estado interno cambia — reemplaza los condicionales de estado con objetos de estado polimórficos.

Por qué importa

Un Pedido avanza por: Pendiente → Procesando → Enviado → Entregado → Cancelado. Sin el patrón State, cada método en Order (ship(), cancel(), deliver()) contiene el mismo largo condicional de verificación de estado. Añadir un nuevo estado como "Retornando" requiere editar cada método. Con el patrón State, cada estado es una clase que posee sus transiciones válidas. Añadir "Retornando" significa una nueva clase — las clases de estado existentes no se tocan.

Máquinas de estado a escala

Para casos simples con un puñado de estados, el patrón es autocontenido. Para flujos de trabajo complejos con docenas de estados, considera una biblioteca dedicada de máquinas de estado (XState para TypeScript, transitions para Python). Estas bibliotecas añaden condiciones de guarda, acciones de entrada/salida y visualización — el patrón State sigue siendo la base conceptual.

💡Conclusión clave

Cuando ves el mismo bloque if estado == X repetido en cada método de una clase, extrae cada estado en un objeto State — las transiciones se vuelven autocontenidas y los nuevos estados no requieren ediciones al código existente.

🔧 Algunos ejercicios pueden tener errores. Si algo parece incorrecto, usa el botón Feedback (abajo a la derecha) para reportarlo — nos ayuda a corregirlo rápido.

Pista: Cuando ves el mismo bloque `if estado == X` repetido en cada método de una clase, la clase necesita un patrón State.

✗ Tu versión