ПАТТЕРН COMMAND (КОМАНДА) JAVA SPRING

  Рет қаралды 2,678

Джавист

Джавист

2 жыл бұрын

Код примера:
github.com/dispikerton/command

Пікірлер: 11
@ZamalSpace
@ZamalSpace 8 ай бұрын
Спасибо ! Очень круто. Хотелось бы еще узнать паттернов с использованием spring. Хотя больше реально похоже на стратегию
@channel-yg2xc
@channel-yg2xc 6 ай бұрын
Видео хорошее, но паттерн, который ты показываешь, называется strategy. Command - это когда у тебя есть шаблонная логика в рамках некоторого класса, и метод вызова этой логики принимает в качестве аргумента command-класс, обобщенный некоторой абстракцией(интерфейс, базовый класс), содержащий метод, который вызывается в классе с шаблонной логикой. И, как по мне, смысла от command в рамках java + Spring приложении нет, если есть возможность использовать template method. А возможность есть всегда :)
@John.Constantine.777
@John.Constantine.777 5 ай бұрын
Сдается мне, что паттерн команда - это поведенческий паттерн проектирования, который превращает запросы в объекты, позволяя передавать их как аргументы при вызове методов, ставить запросы в очередь, логировать (вести журнал запросов) их, а также поддерживать отмену операций. Главное в нем это инкапсуляция методов в объекты, их хранение и возможность отмены. А этот паттерн называется не Стратегия, а Состояние, потому как объект, определяющий поведение основного класса содержится в полях этого класса
@channel-yg2xc
@channel-yg2xc 5 ай бұрын
@@John.Constantine.777 , это если следовать строгому определению. Вопрос скорее в том, может ли Command быть без т.н. операции undo, и обязательно ли она должна содержать состояние. Проще говоря, если вместо класса, имплементитующего некоторый общий интерфейс(ICommand), передавать в метод простой Runnable, в котором через замыкание будет прописана логика, скажем, отправки события в шину сообщений, можно ли это считать Командой? Более того, следовать классическому примеру реализации шаблона Command, на мой взгляд, возможно не всегда: в случае, когда команда отправляет событие в шину сообщений(условный RabbitMQ), применить операцию undo возможности нет. На мой взгляд, в большинстве случаев Command как раз стоит использовать в виде функциональных интерфейсов(анонимных классов), не имющих состояние, а если состояние всё же есть, и команда предполагает нетривиальную и объёмную логику - я бы подумал о Template Method или в некоторых специфических кейсах Bridge, т.к. в случае дальнейшего развития фичи эта команда вряд ли влезет в один метод. Что касается Strategy и State, мне кажется, что пример на видео - это классическая Strategy с использованием механизма dependency injection. Здесь основной момент в том, что у нас есть общий интерфейс для компонентов, предполагающих разное поведение(классический полиморфизм), а "состояние" у нас, во-первых, статическое, неизменяемое, что уже, как мне кажется, противоречит шаблону State, а во-вторых, оно нужно только для того, чтобы положить компонент в ассоциативный массив: мы вполне могли бы обойтись без "инкапсуляции" т.н. "состояния" внутри компонента, положив в хеш-таблицу значения явно указывая компоненты, а не через stream api. Правда, тогда пришлось бы инжектить каждый бин отдельно.
@KotlinBack
@KotlinBack 27 күн бұрын
Даже больше на медиатор похож
@user-iu6yz6ck6h
@user-iu6yz6ck6h 2 жыл бұрын
Мне вообще понравилось! Спасибо
@ruff7209
@ruff7209 Жыл бұрын
ппц ты умный, Спасибо за видос!
@TheLordGamesTv
@TheLordGamesTv 2 жыл бұрын
👍
@for_whom_the_bell_tolls
@for_whom_the_bell_tolls 2 жыл бұрын
Отличный наглядный пример! Правда это наверно скорее Стратегия, а не Комманд, хотя прям утверждать не стану, надо самому чекнуть, всегда их путал))
@javistt
@javistt 2 жыл бұрын
Благодарю. Когда уже смонтировал ролик, тоже подумал, что это скорее стратегия.
@valer0chka189
@valer0chka189 2 жыл бұрын
Чисто моё мнение, но тут не полностью отображен смысл этого паттерна, я считаю что здесь больше про простой полиморфизм)
ПАТТЕРН BUILDER (СТРОИТЕЛЬ) JAVA LOMBOK
13:37
Джавист
Рет қаралды 7 М.
НРАВИТСЯ ЭТОТ ФОРМАТ??
00:37
МЯТНАЯ ФАНТА
Рет қаралды 7 МЛН
路飞太过分了,自己游泳。#海贼王#路飞
00:28
路飞与唐舞桐
Рет қаралды 21 МЛН
Now THIS is entertainment! 🤣
00:59
America's Got Talent
Рет қаралды 40 МЛН
Шаблонный метод (Template Method) Java Spring
12:14
Джавист
Рет қаралды 1,7 М.
Чего ожидать от HTTP/3 + Go
51:07
Нина Пакшина
Рет қаралды 6 М.
JAVA SPRING JDBC: CRUD БЕЗ ORM
21:19
Джавист
Рет қаралды 6 М.
Декоратор - Шаблоны проектирования в деталях
20:36
Уголок сельского джависта
Рет қаралды 1,3 М.
Евгений Борисов - Spring Patterns
56:38
TechTrain
Рет қаралды 130 М.
Command Pattern - Design Patterns (ep 7)
39:12
Christopher Okhravi
Рет қаралды 266 М.
🤫Что скрывается за сюжетом Duck Season?
22:56
СБЕЖАЛ ОТ РОДАКОВ В СПАЛЬНЕ и ЭТО ЗАКОНЧИЛОСЬ ПЛОХО!! (SchoolBoy Runaway)
12:21
ShadowPriestok - Евгений Чернявский
Рет қаралды 698 М.