Introducción: Acciones como objetos
Command encapsula una solicitud como objeto, permitiendo colas, logs, deshacer y macros. Al separar el invocador de la acción concreta, puedes cambiar o reordenar comandos sin tocar el emisor.
Este patrón es clave cuando necesitas historial de acciones, ejecución diferida o repetición de operaciones en distintos contextos.

Prompt: Modern control panel with buttons, minimal tech style.
1. Naturaleza: Señales y respuestas
Un estímulo (señal) provoca una acción. El estímulo es un "comando" que dispara una respuesta.
La señal no necesita conocer el detalle del movimiento; solo activa el mecanismo que sabe ejecutarlo, igual que un comando encapsula la acción.

Prompt: Neuron firing signal, scientific illustration, clean style.
2. Mundo Real: Botones y macros
Un botón "Guardar" ejecuta una acción encapsulada. Una macro es una secuencia de comandos.
La interfaz no sabe cómo se guarda: solo dispara el comando. Esto permite reasignar acciones a los mismos botones sin cambiar la UI.

Prompt: UI macro sequence, arrows connecting buttons, flat infographic style.
3. Implementación en C#: Código Paso a Paso
public interface IComando { void Ejecutar(); }
public class Luz
{
public void Encender() => Console.WriteLine("Luz encendida");
}
public class EncenderLuz : IComando
{
private Luz _luz;
public EncenderLuz(Luz luz) { _luz = luz; }
public void Ejecutar() => _luz.Encender();
}
public class ControlRemoto
{
private IComando _comando;
public void SetComando(IComando comando) => _comando = comando;
public void Presionar() => _comando.Ejecutar();
}
// Uso
var luz = new Luz();
var cmd = new EncenderLuz(luz);
var control = new ControlRemoto();
control.SetComando(cmd);
control.Presionar();
4. Command vs Strategy
Strategy selecciona algoritmos. Command encapsula acciones con posibilidad de historial.
Si necesitas deshacer, encolar o registrar acciones, Command es más adecuado; si solo cambias el algoritmo, Strategy es más simple.
5. Diagrama UML

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

Prompt: Flow diagram showing invoker, command, receiver, minimal infographic.
⚠️ Cuándo NO Usar Command
- Si no necesitas deshacer, colas ni historial.
- Si las acciones son triviales y agregar objetos comando no aporta valor.
💪 Ejercicio
Crea comandos para reproducir, pausar y detener música, y una macro de "modo fiesta".
Conclusión
Command convierte acciones en objetos reutilizables y composables. Es ideal para interfaces, colas de trabajo y workflows con auditoría.