Что такое шаблон проектирования действий, я еще не слышал об этом? Я подозреваю, что это то же самое, что шаблон проектирования команд [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){}
}
Надеюсь, что это поможет.