Patrón State — Ejemplo Práctico

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

El patrón State modela transiciones de estado como clases con comportamiento propio.

1. El Problema de Partida

Un post de knowledge pasa por draft → review → published. El script scripts/publish-post.js verificaba el campo status con if/else anidados: si está en draft puede pasar a review, si está en review puede publicarse o volver a draft, si está published no puede modificarse. Cada regla nueva (ej. "solo el admin puede publicar") añadía más ramas al mismo bloque.

2. La Solución State

3. Uso

4. Ventajas

  • Transiciones explícitas: cada estado sabe a qué otro estado puede pasar, sin if gigantes dispersos.
  • Reglas nuevas aisladas: añadir un estado archived es una clase nueva, sin tocar las existentes.
  • Imposible un estado inválido: las transiciones no permitidas lanzan error de forma centralizada.