Comando:
Componenti di base:
- Comando dichiara un'interfaccia per comandi astratti come
execute()
- Ricevitore sa come eseguire un particolare comando
- Invoker tiene ConcreteCommand , che deve essere eseguito
- Il cliente crea ConcreteCommand e assegnare Receiver
- ConcreteCommand definisce l'associazione tra Command e Receiver
Flusso di lavoro:
Il client chiama Invoker => Invoker chiama ConcreteCommand => ConcreteCommand chiama il metodo Receiver , che implementa il metodo Command astratto .
Vantaggio : il client non subisce modifiche in Command and Receiver. Invoker fornisce un accoppiamento libero tra Cliente e Ricevente. Puoi eseguire più comandi con lo stesso Invoker.
Il modello di comando ti consente di eseguire un comando su diversi ricevitori utilizzando lo stesso Invoker . Invoker non è a conoscenza del tipo di ricevitore
Per una migliore comprensione dei concetti, dai un'occhiata a questo articolo di JournalDev di Pankaj Kumar e l' articolo di dzone di James Sugrue oltre al link di Wikipedia.
Puoi usare il modello di comando per
Disaccoppia l'invocatore e il destinatario del comando
Implementare il meccanismo di callback
Implementa funzionalità di annullamento e ripetizione
Mantieni una cronologia dei comandi
java.lang.Thread
è una buona implementazione del modello di comando . Puoi trattare Thread come invoker e classe che implementa Runnable come ConcreteCommonad / Receiver e run()
metodo come Command .
La versione Annulla / Ripristina del modello di comando può essere letta nell'articolo di Theodore Norvell
Strategia:
Il modello strategico è molto semplice da capire. Usa questo modello quando
Sono disponibili più implementazioni per un algoritmo e l'implementazione dell'algoritmo può cambiare in fase di esecuzione a seconda di condizioni particolari .
Prendi un esempio del componente Tariffa del sistema di prenotazione della compagnia aerea
Le compagnie aeree vorrebbero offrire tariffe diverse durante periodi di tempo diversi - mesi di punta e non di punta. Durante i giorni di viaggio non di punta, vorrebbe stimolare la domanda offrendo sconti interessanti.
Aspetti chiave del modello di strategia :
- È un modello comportamentale
- Si basa sulla delega
- Cambia le viscere dell'oggetto modificando il comportamento del metodo
- Viene utilizzato per passare da una famiglia di algoritmi
- Modifica il comportamento dell'oggetto in fase di esecuzione
Post correlati con esempi di codice:
Utilizzando il modello Command Design
Esempio del mondo reale del modello di strategia