Patrón Command

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

💡 Ver Caso Práctico: Ejemplo Práctico del Patrón Command

Command (Comando) es un patrón de diseño comportamental que convierte una solicitud en un objeto independiente que contiene toda la información sobre ella, permitiendo parametrizar métodos, encolar solicitudes y soportar operaciones deshacer.

Propósito y Caso de Uso

Utiliza Command cuando necesites desacoplar el objeto que invoca una acción (ej. un botón de UI) del objeto que sabe ejecutarla. También resuelve necesidades de historial de acciones (undo/redo), colas de tareas diferidas, o registro/logging de operaciones ejecutadas.

Estructura del Patrón

  1. Comando (Interfaz): Declara el método execute() (y opcionalmente undo()).
  2. Comandos Concretos: Encapsulan una acción concreta y sus parámetros, delegando en el receptor.
  3. Receptor (Receiver): Contiene la lógica de negocio real que ejecuta la acción.
  4. Invocador (Invoker): Dispara el comando sin conocer los detalles de la acción.
Cargando diagrama...

Flujo de Funcionamiento

  1. Creación: Se crea un comando concreto, encapsulando receptor y parámetros.
  2. Registro: El invocador guarda el comando (en una cola, historial o simplemente para dispararlo).
  3. Ejecución: El invocador llama a execute() sin conocer qué hace el comando internamente.

Ejemplos de Implementación Reales

Cuándo NO usarlo

Si la acción es simple y directa, sin necesidad de encolarla, deshacerla o registrarla, envolverla en un comando añade indirección innecesaria (YAGNIGlosarioYAGNI (You Aren't Gonna Need It)Principio de Extreme Programming (XP) que establece que un programador no debe añadir funcionalidad hasta que sea estrictamente necesario. Su objetivo es evitar la sobre-ingeniería (over-engineering), previniendo código para funcionalidades hipotéticas.Ver término completo →).