|
2 / 2 / 2
Регистрация: 23.10.2016
Сообщений: 139
|
|
Использование и реализация паттерна "Команда"19.02.2017, 23:46. Показов 5471. Ответов 50
Метки нет (Все метки)
Вот схема паттерна (скриншот).
Прицепи, все довольно просто: есть инициатор (Invoker), который хочет, что бы получатель (Receiver) что либо выполнил, а само выполнение инкапсулируется классом КонкретнаяКоманда. 1. А что если инициатор и получатель это один и тот же объект? Для таких действий шаблон Команда подходит? Например: Пользователь ввел в 9 цифр и далее нажал на кнопку Shuffle. После чего эти цифры должны перемешаться. То есть, происходит действие над данными внутри одного класса. Либо еще пример: Пользователь ввел в 9 цифр и программа должна проверить их на корректность. 2. И вообще, насколько часто Вы используете паттерн Команда в своих приложениях (там где есть GUI). Вообщем помогите разобраться, а то я запутался.
0
|
|
| 19.02.2017, 23:46 | |
|
Ответы с готовыми решениями:
50
Реализация паттерна "Команда" Реализация паттерна Observer от Microsoft Реализация консольного меню с использованием паттерна "Команда" |
| 20.02.2017, 14:05 | |
|
0
|
|
| 20.02.2017, 14:09 | |
|
0
|
|
| 20.02.2017, 14:33 | |
|
Не по теме: Usaga, дело в том, что "паттерны" не являются универсальными, а зависят от возможностей языка. То что они позиционируются как универсальные средства проектирования -- это не очень хорошо, это ложь. Многие паттерны -- это просто костыли, которые нужны для преодоления ограничений выразительных возможностей конкретных языков.
0
|
|
|
2 / 2 / 2
Регистрация: 23.10.2016
Сообщений: 139
|
||||||
| 20.02.2017, 14:45 [ТС] | ||||||
|
0
|
||||||
|
14743 / 9517 / 1364
Регистрация: 21.01.2016
Сообщений: 35,910
|
||||
| 20.02.2017, 14:51 | ||||
|
0
|
||||
|
2 / 2 / 2
Регистрация: 23.10.2016
Сообщений: 139
|
|
| 20.02.2017, 14:56 [ТС] | |
|
0
|
|
|
14743 / 9517 / 1364
Регистрация: 21.01.2016
Сообщений: 35,910
|
||
| 20.02.2017, 15:01 | ||
|
Добавлено через 58 секунд Если твоей команде не нужны никакие ссылки для работы, то придумывать какие-то receiver-ы не нужно. Просто класс с методом (скажем Do()), который может кто-то когда-нибудь вызвать.
1
|
||
|
2 / 2 / 2
Регистрация: 23.10.2016
Сообщений: 139
|
|
| 20.02.2017, 15:07 [ТС] | |
|
0
|
|
|
14743 / 9517 / 1364
Регистрация: 21.01.2016
Сообщений: 35,910
|
|
| 20.02.2017, 15:09 | |
|
Tyson Fury, полагаю, что тут изображено то, что у нас на работе называется RelayCommand. В данном случае объект команды просто делегирует свою работу другому коду. Это не обязательно делать.
0
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,910
|
||||||||||||
| 20.02.2017, 16:45 | ||||||||||||
|
Вместо:
1
|
||||||||||||
|
Заблокирован
|
||||||
| 21.02.2017, 15:55 | ||||||
|
Добавлено через 5 минут Добавлено через 7 минут Добавлено через 7 минут
0
|
||||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,910
|
||
| 21.02.2017, 16:55 | ||
|
Во втором примере кода Main() знает, как надо включать телевизор (как правильно составить лямбду). Более того, если мне нужно будет ещё где-нибудь настроить эту команду (для другого пульта), мне придётся этот код (который составляет лямбду) продублировать. Кроме того, сюда сложно нормально вклеить отмену операции, если она требуется. Пару лямбд передавать? Или - ещё хуже - две независимые лямбды передавать?
0
|
||
|
14743 / 9517 / 1364
Регистрация: 21.01.2016
Сообщений: 35,910
|
||
| 21.02.2017, 17:03 | ||
|
0
|
||
|
Заблокирован
|
|||||
| 21.02.2017, 17:17 | |||||
|
Добавлено через 4 минуты Usaga, покажите какой-нибудь пример, я не понимаю, о чем вы говорите. Команда -- это отсылка сообщения обработчику, не вижу разницы, как эта отсылка реализована, и что она должна "инкапсулировать" Добавлено через 3 минуты
0
|
|||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,910
|
||
| 21.02.2017, 17:27 | ||
|
Чтобы включить телевизор в общем случае нужно знать, какой телевизор включать. И включение прибора обычно не сводится к нажатию кнопки "вкл". Например, может потребоваться залить воду, засыпать кофе, вставить шнур в розетку и так далее.
0
|
||
|
Заблокирован
|
|||
| 21.02.2017, 17:32 | |||
|
Добавлено через 40 секунд
0
|
|||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,910
|
||
| 21.02.2017, 17:38 | ||
|
Здесь обсуждается шаблон Команда, а Ваша критика относится не к нему, а к тому, что Вы сами придумали (к Вашему неправильному понимаю этого шаблона).
0
|
||
|
Заблокирован
|
||
| 21.02.2017, 17:51 | ||
|
Добавлено через 4 минуты Shamil1, по сути дела, все ООП можно рассматривать в том же самом ключе, все объекты сконфигурированы на прием сообщений, которые можно назвать командами, только объект не обязан исполнять эту команду, он сам решает, что ему делать, и как на нее реагировать. А любая команда реализована некоторым обработчиком.
0
|
||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,910
|
||
| 21.02.2017, 18:37 | ||
|
Если Вы хотите обсудить шаблон "Команда", то Вам обязательно нужно знать, что (по мнению автора шаблона) означает "команда" в данном контексте. Если Вы хотите обсудить, насколько удачное название придумал автор для своего шаблона, то создайте тему в разделе "обо всём". Если Вы хотите объяснить автору шаблона, что он имел ввиду под словом "команда", то Вам следует обратиться непосредственно к автору шаблона.
0
|
||
|
Заблокирован
|
|||
| 21.02.2017, 19:02 | |||
|
Во-вторых, автор того утверждения так и не ответил, зачем там нужно состояние, если все что там делается -- отсылается сообщение.. Под состоянием понимается изменяемое состояние надо полагать? Зачем оно там нужно? Зачем оно нужно, в Вашем примере, и вообще? Добавлено через 15 минут
0
|
|||
| 21.02.2017, 19:02 | |
|
Какова роль 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
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|