|
2 / 2 / 2
Регистрация: 23.10.2016
Сообщений: 139
|
|
Использование и реализация паттерна "Команда"19.02.2017, 23:46. Показов 5469. Ответов 50
Метки нет (Все метки)
Вот схема паттерна (скриншот).
Прицепи, все довольно просто: есть инициатор (Invoker), который хочет, что бы получатель (Receiver) что либо выполнил, а само выполнение инкапсулируется классом КонкретнаяКоманда. 1. А что если инициатор и получатель это один и тот же объект? Для таких действий шаблон Команда подходит? Например: Пользователь ввел в 9 цифр и далее нажал на кнопку Shuffle. После чего эти цифры должны перемешаться. То есть, происходит действие над данными внутри одного класса. Либо еще пример: Пользователь ввел в 9 цифр и программа должна проверить их на корректность. 2. И вообще, насколько часто Вы используете паттерн Команда в своих приложениях (там где есть GUI). Вообщем помогите разобраться, а то я запутался.
0
|
|
| 19.02.2017, 23:46 | |
|
Ответы с готовыми решениями:
50
Реализация паттерна "Команда" Реализация паттерна Observer от Microsoft Реализация консольного меню с использованием паттерна "Команда" |
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,909
|
|
| 21.02.2017, 19:54 | |
|
0
|
|
|
Заблокирован
|
|
| 21.02.2017, 20:20 | |
|
0
|
|
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,909
|
|
| 21.02.2017, 20:22 | |
|
Ищите в гугле "инкапсулирование запроса в виде объекта".
0
|
|
|
Заблокирован
|
|||||||
| 21.02.2017, 22:03 | |||||||
|
http://flash2048.com/post/command То что там автор называет "командой", на деле является контроллером, отвечающим за управление девайсом. Терминология явно неадекватна. Ну это ладно. Какова цель создания этого контроллера? Нужно отделить девайс(например телевизор) от управления им? Если так, то почему он в классе телевизор все равно лепит средства управления им?
Добавлено через 24 минуты Shamil1, и вот еще что непонятно. Насколько я понял, основная цель автора в том, что у него разные девайсы управляются с одного пульта. Но для этой цели не нужно создавать отдельные контроллеры, для этого достаточно единого интерфейса для всех девайсов. В чем тогда смысл всего этого? Почему автор считает, что данный "паттерн" нужен для его случая?
0
|
|||||||
|
2 / 2 / 2
Регистрация: 23.10.2016
Сообщений: 139
|
|||||
| 22.02.2017, 00:36 [ТС] | |||||
|
Главная цель темы это понять: где и когда имеет смысл применять паттерн Команда. Не по теме: actionpattern, у Вас регистрация 21.02.2017 и ник прикольный=) Под эту тему учетку делали?))
0
|
|||||
|
Заблокирован
|
||
| 22.02.2017, 01:35 | ||
|
Tyson Fury, я когда про автора говорил, я имел в виду не Вас, а того, который по ссылке.
Добавлено через 1 минуту
0
|
||
|
2 / 2 / 2
Регистрация: 23.10.2016
Сообщений: 139
|
||
| 22.02.2017, 02:44 [ТС] | ||
|
К стати у того автора, пример почти списан с книги (Эрик Фримен, Элизабет Фримен - Паттерны проектирования (Head First O'Reilly) - 2011).
0
|
||
|
14741 / 9515 / 1364
Регистрация: 21.01.2016
Сообщений: 35,908
|
||
| 22.02.2017, 05:57 | ||
|
Лично я вижу этот паттерн и как набор параметров и как исполнитель в одном объекте (что мне кажется вполне разумным). Оттого могло пойти и недопонимание между нами.
0
|
||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,909
|
||
| 22.02.2017, 10:29 | ||
|
Насколько уместно для заданной в статье задачи использование именно этого шаблона к текущему топику не относится. О применении шаблона в реальных задачах можно, например, почитать в википедии: Кликните здесь для просмотра всего текста
Применение
Шаблон Команда может быть полезен в следующих случаях. Кнопки пользовательского интерфейса и пункты меню В Swing и Borland Delphi Action (действие) является объектом команды. В дополнение к способности выполнить нужную команду, Action может иметь связанную с ним иконку, сочетание клавиш, текст всплывающей подсказки и так далее. Кнопка на панели инструментов или пункт меню могут быть полностью инициализированы с использованием только объекта Action. Запись макросов Если все действия пользователя представлены в виде объектов команды, программа может записать последовательность действий, просто сохраняя список командных объектов в том порядке, в котором они выполняются. Затем она может «воспроизвести» одни и те же действия, выполняя те же объекты команд в той же последовательности. Многоуровневая отмена операций (Undo) Если все действия пользователя в программе реализованы в виде командных объектов, программа может сохранить стек последних выполненных команд. Когда пользователь хочет отменить команду, программа просто выталкивает последний объект команды и выполняет его метод undo(). Сети Можно отправить объекты команд по сети для выполнения на другой машине, например действие игрока в компьютерной игре. Индикаторы выполнения Предположим, что программа имеет последовательность команд, которые она выполняет по порядку. Если каждый объект команды имеет метод getEstimatedDuration() (получить оценочную длительность), программа может легко оценить общую продолжительность процесса. Она может показать индикатор выполнения, который отражает, насколько близка программа к завершению всех задач. Пулы потоков Типичный класс пула потоков общего назначения может иметь метод addTask(), который добавляет рабочий элемент к внутренней очереди заданий ожидающих своего выполнения. Он поддерживает пул потоков, которые выполняют команды из очереди. Элементы в очереди являются объектами команд. Как правило, эти объекты реализуют общий интерфейс, такой как java.lang.Runnable, что позволяет пулу потоков запустить команды на выполнение, даже если он сам был написан без каких-либо знаний о конкретных задачах, для которых он будет использоваться. Транзакции Аналогично операции «отмена» система управления базами данных (СУБД) или установщик программного обеспечения может хранить список операций, которые были или будут выполнены. Если одна из них закончится неудачей, то все остальные могут быть отменены или быть отброшены (обычно называется откат). Например, если две связанные между собой таблицы базы данных должны быть обновлены, а второе обновление терпит неудачу, то транзакция может быть откачена, чтобы первая таблица не содержала недопустимую ссылку. Мастера Часто мастер (мастер установки или любой другой) представляет несколько страниц конфигурации для одного действия, которое происходит только тогда, когда пользователь нажимает на кнопку «Готово» на последней странице. В этих случаях, естественный способ отделить код пользовательского интерфейса от кода приложения является реализация мастера с помощью объекта команд. Объект команда создается при первом отображении мастера. Каждая страница мастера сохраняет свои изменения в объекте команды, поэтому объект заполняется по мере перехода пользователя. Кнопка «Готово» просто запускает метод execute() на выполнение. В класс Телевизор автор статьи ничего не лепит. В соответствии с шаблоном это некий уже существующий класс, созданный вне данного шаблона. Можете считать, что он скачал его гитхаба. Единый интерфейс для всех дивайсов у автора статьи есть - ICommand.
1
|
||
|
Заблокирован
|
||
| 22.02.2017, 18:23 | ||
|
А этовсе, что Ваши объяснения, что по ссылке, что в википедии -- это просто заклинания. Это все тему не раскрывает, по-моему.
0
|
||
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
| 24.02.2017, 11:35 | |
|
Вообще паттерн Команда очень полезен,
когда надо динамически формировать последовательность некоторых операций. Создаем контейнер команд, закидываем туда объекты-команды в нужном порядке - и вперед!
1
|
|
| 24.02.2017, 11:35 | |
|
Какова роль Invoker паттерна Команда?
Реализация паттерна MVC Реализация паттерна состояние Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|