JavaScript Commander


Exemple

Le modèle de commande encapsule les paramètres dans une méthode, l'état actuel de l'objet et la méthode à appeler. Il est utile de compartimenter tout ce qui est nécessaire pour appeler une méthode ultérieurement. Il peut être utilisé pour émettre une "commande" et décider plus tard quel morceau de code utiliser pour exécuter la commande.

Il y a trois composants dans ce modèle:

  1. Message de commande - la commande elle-même, y compris le nom de la méthode, les paramètres et l'état
  2. Invoker - la partie qui demande à la commande d'exécuter ses instructions. Il peut s'agir d'un événement chronométré, d'une interaction utilisateur, d'une étape d'un processus, d'un rappel ou de tout autre moyen nécessaire pour exécuter la commande.
  3. Reciever - la cible de l'exécution de la commande.

Message de commande en tant que tableau

var aCommand = new Array();
aCommand.push(new Instructions().DoThis);  //Method to execute
aCommand.push("String Argument");  //string argument
aCommand.push(777);                //integer argument
aCommand.push(new Object {} );     //object argument
aCommand.push(new Array() );       //array argument

Constructeur pour la classe de commande

class DoThis {
    constructor( stringArg, numArg, objectArg, arrayArg ) {
        this._stringArg = stringArg;
        this._numArg = numArg;
        this._objectArg = objectArg;
        this._arrayArg = arrayArg;
    }
    Execute() {
       var receiver = new Instructions();
       receiver.DoThis(this._stringArg, this._numArg, this._objectArg, this._arrayArg );
    }
}     

Invocateur

aCommand.Execute();  

Peut invoquer:

  • immédiatement
  • en réponse à un événement
  • dans une séquence d'exécution
  • comme une réponse de rappel ou dans une promesse
  • à la fin d'une boucle d'événement
  • de toute autre manière nécessaire pour invoquer une méthode

Destinataire

class Instructions {
    DoThis( stringArg, numArg, objectArg, arrayArg ) {
        console.log( `${stringArg}, ${numArg}, ${objectArg}, ${arrayArg}` );
    }
}

Un client génère une commande, la transmet à un invocateur qui l'exécute immédiatement ou retarde la commande, puis la commande agit sur un récepteur. Le modèle de commande est très utile lorsqu'il est utilisé avec des modèles compagnons pour créer des modèles de messagerie.