Modelo Iterativo Incremental

Patrones de Diseño. Patrón Command.

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. La clase 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.

Dejar un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga una mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información sobre las cookies utilizadas.plugin cookies

ACEPTAR
Aviso de cookies