Exemplo n.º 1
0
 /**
  * Il design pattern Command incapsula una richiesta come un oggetto. Con ciò il client ha la
  * possibilità di effettuare diverse richieste, come log requests e queue. Promuove l'invocazione
  * di un metodo su un oggetto ed è object-oriented. E' utilizzato principalmente quando bisogna
  * fare richieste ad oggetti senza sapere nulla dell'operazione richiesta o del receiver della
  * richiesta. Tale pattern disaccoppia l'oggetto che invoca l'operazione dall'oggetto che conosce
  * come eseguirla. Per ottenere questa separazione il designer crea una classe astratta che mappa
  * un receiver (un oggetto) con un'azione (un puntatore a una funzione membro). La classe base
  * contiene un metodo execute() che semplicemente chiama l'azione sul receiver. Tutti i client
  * dell'oggetto Command trattano ogni oggetto come una "black box", eseguendo semplicemente
  * un'inovazione sul metodo execute sull'ogggetto ogni volta che il client richiede il "servizio"
  * dell'oggetto. La classe command gestisce il seguente insieme: - un oggetto - un metodo che può
  * essere applicato all'oggetto - gli argomenti necessari quando bisogna chiamare il metodo Il
  * metodo "execute" del command poi fa lavorare insieme questi pezzi
  *
  * <p>( + ) I design non solo accelerano la fase di design di un progetto object-oriented ma
  * incrementano la produttività del team di sviluppo e la qualità del software. Un Command pattern
  * è un design pattern comportamentale che ci abilita a ottenere un completo disaccoppiamento tra
  * il sender e il receiver. Un sender è un oggetto che invoca una operazione e un receiver è un
  * oggetto che riceve la richiesta a eseguire una certa operazione. Con il disaccoppiamento il
  * sender non ha conoscenza dell'interfaccia del Receiver, il termine request riferisce al command
  * che è eseguito. Tale pattern ci consente di cambiare quando e come la richiesta è compiuta,
  * otteniamo flessibilità e estendibilità.
  */
 public static void main(String... args) {
   Light testLight = new Light();
   LightOnCommand testLOC = new LightOnCommand(testLight);
   LightOffCommand testLFC = new LightOffCommand(testLight);
   Switch testSwitch = new Switch(testLOC, testLFC);
   testSwitch.flipUp();
   testSwitch.flipDown();
 }