1) La responsabilité principale pour le client est de mettre en place correctement les objets Invocateur, Destinataire et Commandement, puis d'initier la procédure d'exécution au lieu et à l'heure appropriés.
Il pourrait, par exemple, quelque chose comme ça
class Client {
...
invoker.executeCommand()
...
}
2) la responsabilité principale de Invocateur est d'invoquer une ou plusieurs méthodes de commande-commande objet dans un ordre particulier.
Par exemple,
class Invoker {
...
command.command1();
command.command2();
command.command3();
...
}
Considérons, par exemple, la classe java.awt.event.KeyListener. Il dispose de trois méthodes qui est invoquée dans l'ordre suivant:
keyPressed(KeyEvent e)
keyTyped(KeyEvent e)
keyReleased(KeyEvent e)
classe Invocateur pour cet auditeur pourrait être:
class KeyInvocation {
KeyListener listener;
void invokeKey(EventObject e) {
listener.keyPressed(e);
listener.keyTyped(e);
listener.keyReleased(e);
}
}
Meantime classe Client doit instancie appropriée ObjetEvenement, KeyListener et KeyInvocation puis exécuter en bonne place et temps méthode invokeKey.
Bien sûr, l'invocateur est une couche supplémentaire de motif de commande. Dans un cas plus simple de modèle de commande, nous pouvons ignorer la classe Invoker et faire tout le travail dans le client un.
Copie possible de [Motif de conception de commande - Invocation facultative?] (Http://stackoverflow.com/questions/12879609/command-design-pattern-is-invoker-optional). C'est plus tôt, mais l'autre a plus d'infos. – outis