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