Mando:
Componentes básicos:
- Command declara una interfaz para comandos abstractos como
execute()
- El receptor sabe cómo ejecutar un comando en particular
- Invoker tiene ConcreteCommand , que debe ejecutarse
- El cliente crea ConcreteCommand y asigna un receptor
- ConcreteCommand define el enlace entre Command y Receiver
Flujo de trabajo:
El cliente llama a Invoker => El invocador llama a ConcreteCommand => ConcreteCommand llama al método Receiver , que implementa el método de comando abstracto .
Ventaja : el cliente no se ve afectado por los cambios en Command y Receiver. El invocador proporciona un acoplamiento flexible entre el cliente y el receptor. Puede ejecutar varios comandos con el mismo invocador.
El patrón de comando le permite ejecutar un comando en diferentes receptores usando el mismo invocador . El invocador desconoce el tipo de receptor
Para una mejor comprensión de los conceptos, eche un vistazo a este artículo de JournalDev de Pankaj Kumar y al artículo de dzone de James Sugrue, además del enlace de Wikipedia.
Puede utilizar el patrón Command para
Desacoplar al invocador y al receptor del mando
Implementar mecanismo de devolución de llamada
Implementar la funcionalidad de deshacer y rehacer
Mantener un historial de comandos
java.lang.Thread
es una buena implementación del patrón Command . Puede tratar Thread como invocador y clase implementando Runnable como ConcreteCommonad / Receiver y el run()
método como Command .
La versión Deshacer / Rehacer del patrón de comando se puede leer en el artículo de Theodore Norvell
Estrategia:
El patrón de estrategia es muy simple de entender. Utilice este patrón cuando
Tiene varias implementaciones para un algoritmo y la implementación del algoritmo puede cambiar en el tiempo de ejecución según las condiciones particulares .
Tome un ejemplo del componente de tarifa del sistema de reserva de aerolíneas
A las aerolíneas les gustaría ofrecer diferentes tarifas durante diferentes períodos de tiempo: meses pico y no pico. Durante los días de menor actividad turística, le gustaría estimular la demanda ofreciendo atractivos descuentos.
Conclusiones clave del patrón de estrategia :
- Es un patrón de comportamiento
- Se basa en la delegación
- Cambia las entrañas del objeto modificando el comportamiento del método.
- Se usa para cambiar entre familias de algoritmos
- Cambia el comportamiento del objeto en tiempo de ejecución.
Publicaciones relacionadas con ejemplos de código:
Usando el patrón Command Design
Ejemplo del mundo real del patrón de estrategia