Revista Tecnología

Patrones de Diseño. Patrón Command.

Publicado el 10 febrero 2015 por Instintobinario

Hoy en la serie de patrones de diseño, hablamos del patrón Command.

Propósito

Encapsular una solicitud como un objeto, no dejando parametrizar clientes con diferentes solicitudes.

Motivación

A veces es necesario publicar solicitudes a objetos sin que estos conozcan nada sobre la operación. Por ejemplo las interfaces de usuario incluyen objetos como botones y menús que realizan una solicitud en respuesta a una entrada del usuario. Pero la interfaz no puede implementar la solicitud explícitamente en el botón o en el menú porque solo las aplicaciones que usan la interfaz saben que debería hacerse con cada objeto. Como diseñadores de la interfaz no tenemos forma de conocer el receptor de la solicitud o las operaciones que la llevaran a cabo.

El patrón Command permite a los objetos de la interfaz hacer solicitudes de objetos de una aplicación no especificada convirtiendo la solicitud en un objeto. Este objeto puede ser almacenado y movido como otros objetos. La clave de este patrón es la clase abstracta command que declara una interfaz para ejecutar operaciones.

Patrones de Diseño. Ejemplo del patrón Command.

Ejemplo del patrón Command

Aplicabilidad

Usa el patrón Command cuando quieras:

 

  • Parametrizar objetos con una acción para realizar
  • Especificar, encolar y ejecutar solicitudes al mismo tiempo
  • Soportar cambios en el log de forma que puedan ser reaplicados en caso de un fallo en el sistema.
  • Estructurar un sistema en torno a operaciones de alto nivel construidas en operaciones primitivas.

Estructura

La clase Command declara una interfaz para ejecutar una operación. La clase ConcreteCommand implementa Execute invocando la correspondiente operación u operaciones en Receiver. La clase Client crea un objeto de ConcreteCommand y fija su Receiver. Laclase Invoker le dice al command que lleve a cabo la solicitud. La clase Receiver conoce como realizar las operaciones asociadas con llevar a cabo una solicitud.

Patrones de Diseño. Estructura del Patrón Command.

Estructura del patrón Command

Consecuencias

Las ventajas de este patrón son:

  • Desacopla el objeto que invoca la operación del que conoce como realizarla.
  • Los objetos Command pueden ser manipulados y extendidos como cualquier otro objeto.
  • Es fácil añadir nuevos Commands porque no tenemos que cambiar las clases existentes.

Usos conocidos

Las clases Button y MenuItem de Java usan este patrón. Además este patrón tiene sentido utilizarse en los sistemas de una casa inteligente por ejemplo.

El artículo Patrones de Diseño. Patrón Command. apareció por primera vez en Instinto Binario.

Patrones de Diseño. Patrón Command.

Volver a la Portada de Logo Paperblog

Revista