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 draftreviewpublished. 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.