Introducción: Comportamiento cambiante
State permite cambiar el comportamiento de un objeto cuando su estado interno cambia. En lugar de usar grandes if o switch, encapsulas cada estado como una clase.
Esto hace que las transiciones sean explícitas y el código más mantenible.

Prompt: Gradient color transitions, abstract state change visual.
1. Naturaleza: Metamorfosis
Una mariposa cambia completamente su comportamiento según su estado: huevo, oruga, crisálida, adulta.
Cada fase tiene reglas y capacidades distintas, igual que un objeto en State delega su comportamiento al estado actual.

Prompt: Butterfly lifecycle stages, educational illustration style.
2. Mundo Real: Semáforo
El mismo semáforo responde distinto según su estado: rojo, amarillo, verde.
Las transiciones están definidas y se ejecutan automáticamente, evitando condiciones dispersas por el código.

Prompt: Traffic light at night, cinematic style.
3. Implementación en C#: Código Paso a Paso
public interface IEstado { void Manejar(Contexto c); }
public class EstadoRojo : IEstado
{
public void Manejar(Contexto c) { Console.WriteLine("Rojo"); c.Estado = new EstadoVerde(); }
}
public class EstadoVerde : IEstado
{
public void Manejar(Contexto c) { Console.WriteLine("Verde"); c.Estado = new EstadoRojo(); }
}
public class Contexto
{
public IEstado Estado { get; set; }
public void Solicitar() => Estado.Manejar(this);
}
4. State vs Strategy
State cambia automáticamente por transiciones. Strategy se elige explícitamente.
Si el contexto decide cuándo cambiar, estás en State; si el cliente selecciona el algoritmo, es Strategy.
5. Diagrama UML

Prompt: UML diagram of State pattern, clean vector layout.

Prompt: State transition diagram, minimal infographic style.
⚠️ Cuándo NO Usar State
- Si solo tienes unas pocas condiciones simples.
- Si las transiciones son muy raras y no justifican clases extra.
💪 Ejercicio
Crea estados para un reproductor: Reproduciendo, Pausado, Detenido.
Conclusión
State hace que las transiciones sean claras y el código más limpio. Es ideal para máquinas de estados, flujos y UI complejas.