Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

Из описания Шаблон команды на SourceMaking.com:

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

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

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

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

«Команда» ощущается как половина шаблона «Действие/Исполнитель» — «действие» кажется синонимом «команды».Шаблон «Действие/Исполнитель» делает еще один шаг вперед и описывает еще одну задачу, чья обязанность состоит в том, чтобы принять изменения, созданные «действием» или «командой», и сохранить их в каком-то месте.

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

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

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){}
}

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top