Chuck's Academy

Patrones de diseño en JavaScript

Patrón Command

El patrón Command es un patrón de diseño de comportamiento que convierte solicitudes u operaciones en objetos. Este patrón permite que las solicitudes sean parametrizadas, encoladas, registradas y deshechas, proporcionando una mayor flexibilidad y desacoplamiento en la ejecución de operaciones.

Características del Patrón Command

  1. Encapsulación: Las solicitudes se encapsulan como objetos independientes.
  2. Desacoplamiento: Desacopla al objeto que invoca la operación del objeto que la realiza.
  3. Flexibilidad: Permite encolar, almacenar y deshacer operaciones de manera flexible.

Beneficios del Patrón Command

  • Reusabilidad: Las operaciones encapsuladas como objetos pueden ser reutilizadas en diferentes contextos.
  • Mantenimiento: Facilita la adición y modificación de comandos sin afectar al código existente.
  • Deshacer y rehacer: Facilita la implementación de funcionalidad de deshacer y rehacer operaciones.

Implementación del Patrón Command en JavaScript

A continuación se presentan ejemplos de cómo implementar el patrón Command utilizando la sintaxis moderna de ES6.

Ejemplo 1: Implementación Básica del Patrón Command

javascript

En este ejemplo, los comandos ComandoLuzEncender y ComandoLuzApagar encapsulan las acciones de encender y apagar la luz. El ControlRemoto actúa como invocador que ejecuta y deshace estos comandos.

Ejemplo 2: Encadenamiento de Comandos

Este ejemplo muestra cómo se pueden encadenar varios comandos.

javascript

En este ejemplo, MacroComando agrupa varios comandos y permite ejecutarlos o deshacerlos en secuencia.

Casos de Uso del Patrón Command

El patrón Command es útil en situaciones donde:

  1. Historial de operaciones: Se necesita mantener un historial de operaciones para soporte de deshacer/rehacer.
  2. Operaciones parametrizadas: Las operaciones necesitan ser parametrizadas y ejecutadas en diferentes contextos.
  3. Invocación desacoplada: Se desea desacoplar la invocación de operaciones de su implementación.

Consideraciones y Buenas Prácticas

  • Granularidad adecuada: Define comandos de granularidad adecuada para no complicar la gestión de operaciones.
  • Manejo de excepciones: Implementa un manejo adecuado de excepciones dentro de los comandos para evitar fallos en cascada.
  • Documentar intenciones: Documenta claramente las intenciones y efectos de cada comando para facilitar su mantenimiento y uso.

En el próximo capítulo, exploraremos el Patrón Strategy y cómo se puede utilizar para definir una familia de algoritmos y hacerlos intercambiables.


Pregúntame lo que sea