Что такое шаблон проектирования действий?

Что такое шаблон проектирования действий, я еще не слышал об этом? Я подозреваю, что это то же самое, что шаблон проектирования команд [wikipedia], но я не могу найти на нем никаких ресурсов.

Ответ 1

Вы правы, шаблон действия == шаблон команды. Вы слышите, что он чаще всего называется шаблоном действия в графическом дизайне, в форме "на некоторой кнопке нажата, выполните это действие". В коде кнопка будет подключена с каким-либо действием.

Ответ 2

Я читаю "" Шаблон действия/исполнителя" в MSDN прямо сейчас, и я должен не соглашаться с предпосылкой, что команда и Шаблоны действий/исполнителей одинаковы.

Из описания Command Pattern на SourceMaking.com:

  • Инкапсулировать запрос как объект, тем самым позволяя вам параметризовать клиентов с различными запросами, запросами очереди или журналов и поддерживать отмененные операции.
  • Содействовать "вызову метода на объект" для полного статуса объекта
  • Объектно-ориентированный обратный вызов

Из статьи MSDN о шаблоне Action/Executor:

Шаблон Action/Executor определяет стратегию сопоставления вариантов использования кода, позволяя улучшить видимость и гибкость. Кроме того, в нем рассматриваются проблемы, связанные с загрязнением объектов, и отказ от надлежащего использования транзакций.

Различие заключается в том, что "действие" инкапсулирует один или несколько шагов, которые при успешном деле делегировании управления другому объекту, ответственному за знание того, как сохранить эти изменения в базе данных, веб-службе или хранении файлов. Действие отключено от того, как оно выполняется/сохраняется.

"Команда" воспринимается как одна половина шаблона Action/Executor - "действие" кажется синонимом "команды". Шаблон действия/исполнителя содержит еще один шаг и описывает еще одну проблему, ответственность которой заключается в том, чтобы принимать изменения, вызванные "действием" или "командой", и сохранять их в некотором месте.

Ответ 3

Шаблон проектирования действий такой же, как шаблон проектирования команды. Действие - это ключевой объект, который сам инкапсулирует информацию о том, какое поведение, какая обработка должна выполняться по методу do(), как ее можно отменить и т.д. Когда приложение или любой из его компонентов сконструирован в соответствии с шаблоном проектирования Action, то все действия в приложении могут быть представлены в форме действия, каждая вещь может быть переделана/отменена несколько раз. Например. Макросы в excel, Undo/redo в текстовых редакторах и т.д.

Класс действия, являющийся строительным блоком в этом шаблоне проектирования, может быть сконструирован следующим образом: -

public interface Action{
  public void do();
  public void undo();
  public void do(int iNoOfTimes);
}

public class FileCopyAction implements Action{
  private int iActionId;
  public void do(){}
  public void undo(){}
  public void do(int iNoOfItems){}
}

Надеюсь, что это поможет.