Pregunta

En el patrón de comando:

¿Por qué no debe ser el participante cliente la misma clase que el participante invocador? ¿Hay posibles escenarios cuando el participante cliente y el participante invocador puede ser la misma clase?

¿Fue útil?

Solución

La mayor razón es que viola el principio incumba la responsabilidad individual. El participante Client y particpant Invoker ambos tienen RESPONSABILIDADES individuales y un cambio en uno afecta a la otra.

Otros consejos

1) La responsabilidad primordial de cliente es instanciation adecuado de invocador, el receptor y objetos de comando y luego iniciar el procedimiento de ejecución en el lugar y momento adecuado.

Podría ser, por ejemplo, ser algo como esto

class Client {

...

invoker.executeCommand()

...

}

2) La responsabilidad primordial de invocador es invocar uno o más comandos-métodos de Comando de objetos en un orden particular.

Por ejemplo,

class Invoker {

...
command.command1();
command.command2();
command.command3();
...

}

Vamos a considerar, por ejemplo, la clase java.awt.event.KeyListener. Tiene tres métodos que se invoca en el siguiente orden:

keyPressed(KeyEvent e)
keyTyped(KeyEvent e)
keyReleased(KeyEvent e)

clase de invocador para este oyente podría ser:

class KeyInvocation {
    KeyListener listener;

    void invokeKey(EventObject e) {
        listener.keyPressed(e);
        listener.keyTyped(e);
        listener.keyReleased(e);
    }
}
clase

Mientras tanto cliente debe instanciar adecuada EventObject, KeyListener y KeyInvocation y luego ejecutar en el método invokeKey lugar y tiempo adecuado.

De Invoker curso es una capa adicional de patrón de comandos. En el caso más simple del patrón de comando podemos faltar a clase invocador en todo y hacer todo el trabajo en un solo cliente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top