Question

Dans le schéma de commande:

Pourquoi ne pas le participant client la même classe que le participant invocateur? Y at-il des scénarios possibles lorsque le participant client et le participant invocateur peut être la même classe?

Était-ce utile?

La solution

La plus grande raison est qu'il viole le principe unique responsiblity. Le participant client et Invocateur PARTICIPANT ont tous deux responsibilties individuels et un changement à l'un affecte l'autre.

Autres conseils

1) la responsabilité principale pour le client est de bonne instanciation de Invocateur, objets du récepteur et de commande, puis lancer la procédure d'exécution en place et en temps opportun.

Il pourrait, par exemple, quelque chose comme ceci

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 temps et lieu méthode invokeKey.

Bien sûr Invocateur est une couche supplémentaire de motif de commande. En cas de simple modèle de commande, nous pouvons sauter de classe Invocateur du tout et tout le travail dans le client un.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top