Мы используем команды на компьютере, чтобы заставить его выполнять операции. Обычно мы ожидаем, что операция должна быть выполнена, как только мы введем команду. Но в некоторых случаях мы хотели бы, чтобы команда выполнялась после задержки или какого-либо другого условия. Это в основном инструкции по выполнению команд.

Для этого команды представлены в виде объектов. Наиболее важным поведением этого объекта является выполнение операции, выполняемой командой. Помимо этого, он также может поддерживать такие операции, как

  • Отмена операций
  • выполнение операций в другом контексте
  • моделирование эффекта операций

Этот тип моделирования представляет собой шаблон, известный как шаблон команды.

Использование командных объектов

  1. Кнопки и элементы меню графического интерфейса пользователя
    В программировании Swing и Borland Delphi действие является объектом команды. В дополнение к возможности выполнить желаемую команду, Действие может иметь связанный значок, сочетание клавиш, текст всплывающей подсказки и т. д. Кнопка панели инструментов или компонент пункта меню могут быть полностью инициализированы с использованием только объекта Action.
  2. Многоуровневая отменаЕсли все действия пользователя в программе реализованы в виде командных объектов, программа может вести стек последних выполненных команд. Когда пользователь хочет отменить команду, программа просто извлекает самый последний объект команды и выполняет свой метод undo().
  3. Индикаторы выполнения. Предположим, что программа имеет последовательность команд, которые выполняются по порядку. Если у каждого объекта команды есть метод getEstimatedDuration(), программа может легко оценить общую продолжительность. Он может отображать индикатор выполнения, который значимо отражает, насколько программа близка к выполнению всех задач.
  4. Сеть Можно отправлять целые командные объекты по сети для выполнения на других машинах, например действия игрока в компьютерных играх.
  5. Мастера
    Часто мастер представляет несколько страниц конфигурации для одного действия, которое происходит только тогда, когда пользователь нажимает кнопку «Готово» на последней странице. В этих случаях естественным способом отделить код пользовательского интерфейса от кода приложения является реализация мастера с помощью объекта команды. Объект команды создается при первом отображении мастера. Каждая страница мастера сохраняет свои изменения графического интерфейса в объекте команды, поэтому объект заполняется по мере продвижения пользователя. «Готово» просто запускает вызов execute(). Таким образом, класс команд будет работать.
  6. Запись макросов Если все действия пользователя представлены объектами-командами, программа может записать последовательность действий, просто сохраняя список объектов-команд по мере их выполнения. Затем он может «воспроизвести» те же действия, снова последовательно выполняя одни и те же объекты команд. Если в программу встроен механизм сценариев, каждый объект команды может реализовать метод toScript(), и тогда действия пользователя можно будет легко записать в виде сценариев.