1) Основная ответственность за Клиента заключается в правильном создании экземпляров объектов Invoker, Receiver и Command, а затем инициировании процедуры исполнения в соответствующем месте и времени.
Это может быть, например, что-то вроде этого
class Client {
...
invoker.executeCommand()
...
}
2) Основная ответственность за Invoker состоит в том, чтобы вызывать один или несколько командных методов Command Object в определенном порядке.
Например,
class Invoker {
...
command.command1();
command.command2();
command.command3();
...
}
Давайте рассмотрим, например, класс java.awt.event.KeyListener. Он имеет три метода, которые вызываются в следующем порядке:
keyPressed(KeyEvent e)
keyTyped(KeyEvent e)
keyReleased(KeyEvent e)
Класс Invoker для этого слушателя может быть:
class KeyInvocation {
KeyListener listener;
void invokeKey(EventObject e) {
listener.keyPressed(e);
listener.keyTyped(e);
listener.keyReleased(e);
}
}
Между тем, клиентский класс должен правильно создать экземпляр EventObject, KeyListener и KeyInvocation, а затем выполнить в нужном месте и времени метод invokeKey.
Конечно, Invoker - это дополнительный слой шаблона Command.
В более простом случае шаблона Command мы можем вообще пропустить класс Invoker и выполнить всю работу в Client one.