Что ты знаешь о шаблоне проектирования "Стратегия"? Разбираем на реальном проекте | Jetbulb

  Рет қаралды 7,722

Jetbulb

Жыл бұрын

Разбираем шаблон проектирования "Стратегия", реализованный на основе бизнес-задачи из реального проекта.
Программа:
00:00 Введение
02:30 Бизнес-задача
06:10 Что такое Стратегия
10:22 Реализация шаблона проектирования Стратегия
18:20 Как применять шаблоны проектирования
21:06 Заключение
Наш сайт:
jetbulb.com/
interview.jetbulb.com/
Мы в социальных сетях:
t.me/jetbulb

Пікірлер: 83
@arahnid_9844
@arahnid_9844 Жыл бұрын
Привет, Максим. Спасибо большое. В значительной степени именно благодаря твоим видео с тестовыми интервью, сегодня по результатам первого же своего собеседования получил оффер)
@nikolaymatvienko1090
@nikolaymatvienko1090 Жыл бұрын
Максим, круто, что читаешь комментарии в телеграмме и прислушиваешься к ним 👍
@ktotam8913
@ktotam8913 Жыл бұрын
К нам по блату на работу привели парня, он окончил универ по специальности учитель информатики, я в шутку спросил, сколько в байте бит, он ответил, что физику особо не помнит, на следующий день его уволили. Прими к сведению для вопросов на собеседовании🤭
@Jetbulb
@Jetbulb Жыл бұрын
Под столом в слезах xD А главное... очень быстрая история))
@TeuFortMan
@TeuFortMan Жыл бұрын
он дурак! Все знают что бит в байте столько же, сколько и игроков в матче!
@kerlaeda3856
@kerlaeda3856 Жыл бұрын
Полезный ролик. Но хотелось бы что бы принты кода если ты о них говоришь, дольше бы показывались по таймингу.
@Jetbulb
@Jetbulb Жыл бұрын
Тоже обратил на это внимание. Учтем. Спасибо за фидбек))
@user-on4ce8fg8s
@user-on4ce8fg8s Жыл бұрын
@@Jetbulb тоже хотелось бы дольше, а ещё было бы круто закинуть код на гит и диаграммы, так удобнее думать над решением, чем держать всё в голове)
@pineapple_lemonade
@pineapple_lemonade Жыл бұрын
Особенно эта штука круто выглядит в спринге, в другом виде немного конечно, когда мы можем объявить бин который будет мапой, в итоге при добавлении нового бина стратегии он будет в мапу инжектиться автоматом, тут уже до бесконечности расширяй считай
@Jetbulb
@Jetbulb Жыл бұрын
Это правда. Спринг своими фичами нам упрощает жизнь во многом.)))
@denys7995
@denys7995 Жыл бұрын
Максим, спасибо за видео, как всегда на высшем уровне
@user-og2ti2wd5o
@user-og2ti2wd5o Жыл бұрын
Дякую, чоловіче!
@fanatique2568
@fanatique2568 Жыл бұрын
Спасибо. Все доходчиво и увлекательно)
@anjelomanoranjan
@anjelomanoranjan 6 ай бұрын
Спасибо тебе, Макс! Ты крут! Побольше выпускай видео!
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil Жыл бұрын
Спасибо
@vitaliiboichuk8287
@vitaliiboichuk8287 Жыл бұрын
Було дуже цікаво, дякую)
@dmitrypetrov4399
@dmitrypetrov4399 Жыл бұрын
Оу май :)) Спасибо!)
@RushHour-tb8cg
@RushHour-tb8cg Жыл бұрын
Полезно, лайк
@user-kg6yq1cv6r
@user-kg6yq1cv6r Жыл бұрын
Я думаю в решений есть шаблон проектирования "Шаблонный метод".
@Jetbulb
@Jetbulb Жыл бұрын
В точку
@shadowspirit6459
@shadowspirit6459 Жыл бұрын
о, Вот это интересненько будет
@user-lz2ob9vf7v
@user-lz2ob9vf7v Жыл бұрын
Дякую, Макс :)
@sonialakhotska1171
@sonialakhotska1171 Жыл бұрын
Самое крутое - видео действительно интересно смотреть.
@OleksandrDadizha
@OleksandrDadizha Жыл бұрын
Класна картинка на фоні) Змістовний урок, але, будь ласка, тримайте завжди, або більшу частину часу зображення коду на екрані, так краще засвоюється інформація, бо після коду йде пояснення і потрібно повертатися щоб зрозуміти, дякую.
@Jetbulb
@Jetbulb Жыл бұрын
Дякую)) Зауваження та пропозиції прийнято до уваги. Респект 👍
@aziztolearn
@aziztolearn Жыл бұрын
Здравствуйте Максим, хотел бы спросить не мог ли бы создать видео про Dto(data transfer object) как использовать? Где использовать? Где не использовать?
@Jetbulb
@Jetbulb Жыл бұрын
Привет! Подумаем над этим преложением. Идея хорошая))
@devdev8158
@devdev8158 Жыл бұрын
Хороший пример. Впервые встретился со стратегий в разрезе фильтрации данных, а не их обработки. Контекст конечно же может быть сложнее чем просто вызов стратегий. У меня в проекте в нем делалась предварительная подготовка данных, после делегирование вызова стратегиям, где непосредственно была обработка. Самое интересное - контекст контекста) Там, где происходит создание стратегии. В зависимости от сложности задачи можно натолкнуться и на другие шаблоны, например, абстрактную фабрику. Подача материала супер! Спасибо!)
@Jetbulb
@Jetbulb Жыл бұрын
Отличный пример)) Мы кстати в этом направлении и двигаемся))
@andreyshipul6300
@andreyshipul6300 Жыл бұрын
Я думаю в решений есть шаблон проектирования "Цепочка обязанностей".
@user-jf5ej9qe8d
@user-jf5ej9qe8d Жыл бұрын
Сделай видео про брокеры сообщений и как ими можно эффективно пользоваться)
@Jetbulb
@Jetbulb Жыл бұрын
Хорошая мысль. Записал. Спасибо за совет)))
@halalcapital
@halalcapital Жыл бұрын
Макс, а можешь рассказать про ценообразования в IT (ТОП 10 сервисов, приложении и т.п? Очень интересно узнать про это.
@Jetbulb
@Jetbulb Жыл бұрын
Сорян, но не сильно понял твой запрос))) Ценообразование широкая вещь, как и сервисы. В общем я так и не понял, что именно ты хотел бы услышать. Поясни плз.
@halalcapital
@halalcapital Жыл бұрын
@@Jetbulb ну к примеру, сколько стоит создание сайта агрегатора магазинов товаров и услуг с моб. приложениями? или какого нибудь корпоративного портала
@Jetbulb
@Jetbulb Жыл бұрын
@@halalcapital Широко замахнулся)) Теперь понял. Тема действительно интересная. Займусь сбором материала для такого видео. Спасибо за идею!
@edmond-dantes-1796
@edmond-dantes-1796 Жыл бұрын
А каким образом мы избавились от switch/if else? Скорее всего нам будет приходить запрос с фронта на какой то эндпоинт с параметром для репорта. И нам в зависимости от параметра нужно создавать конкретный экземпляр, то есть switch. Или же у нас будет несколько эндпоинтов на каждый параметр и пусть фронт с этим разбирактся? Тоже плохо, ведь это дублирование кода как минимум.
@tiy2000
@tiy2000 Жыл бұрын
В комменте выше про мапу сказано)
@Jetbulb
@Jetbulb Жыл бұрын
Отличный вопрос. Это мы все узнаем в следующих выпусках :) Если кратко, процесс создания стратегий отдельная тема и в концепцию этого шаблона не вкладывается. Потому все будет дальше, как я и сказал в видео с намеком на другие шаблоны.
@nox7716
@nox7716 Жыл бұрын
#БерегитеДжунов
@Jetbulb
@Jetbulb Жыл бұрын
💙
@user-mh3me8ym9b
@user-mh3me8ym9b Жыл бұрын
На 13:28 в setStrategy() пропущен параметр, д .б. setStrategy(DeviceOnPremiseReportStrategy strategy) 🙂 Спасибо, за ролик. Смотрел тебя, перед собеседованиями, что помогло мне чувствовать себя более уверенно.
@Jetbulb
@Jetbulb Жыл бұрын
Тут как раз новый про Builder вышел) Спасибо за смотришь нас. Респект 👍
@user-zn8xr3en6i
@user-zn8xr3en6i Жыл бұрын
Можно было реализовать через spring. Внедрить зависимости в конструкторе интерфейса Стратегии и записать в мапу по какому либо признаку. Потом из мапы доставать и что-то делать
@user-zn8xr3en6i
@user-zn8xr3en6i Жыл бұрын
Вижу еще "Спецификация" паттерн в findAll
@Jetbulb
@Jetbulb Жыл бұрын
@@user-zn8xr3en6i Не угадал)) Хотя близко))
@Jetbulb
@Jetbulb Жыл бұрын
Спринг это только тюнинг в этом смысле. Но вариант тоже ок.
@user-zn8xr3en6i
@user-zn8xr3en6i Жыл бұрын
@@Jetbulb там ещё критерией его называют,кто как. Я просто когда спецификацию смотрел,я видел примеры использования в репозиториях. Но я больше на сложные ифы ее использую
@antonpotuzhniy2995
@antonpotuzhniy2995 Жыл бұрын
все круто но мало кода и нет примеров,точнее нет кода
@Jetbulb
@Jetbulb Жыл бұрын
Может просто ожидания от видео были немного другие или под кодом подразумевает часть проекта. Я немного в замешательства))) Как бы там ни было, думаю что сделать более "насыщенным кодом" отличная мысль. Поработаю над этим в следующем выпуске. Респект.
@John_Smith_Java
@John_Smith_Java Жыл бұрын
Интересно посмотреть. А то я думал, что стратегия - это Герои меча и магии.
@user-qm8qh4xq6i
@user-qm8qh4xq6i Жыл бұрын
Не совсем понятно, зачем workbook (будущий эксель файл) передается в качестве параметра методу execute.
@Jetbulb
@Jetbulb Жыл бұрын
Чтобы внутри заполнять его данными. После обработки из workbook извлекается поток данных и уже уходит «по проводам» для скачивания.
@user-qm8qh4xq6i
@user-qm8qh4xq6i Жыл бұрын
@@Jetbulb передается пустой эксель файл? почему его не создать там, где будем заполнять? "извлекается поток данных" - результирующая выборка передается не в эксель? Спасибо за ответы.
@Jetbulb
@Jetbulb Жыл бұрын
​@@user-qm8qh4xq6i Workbook - это не Эксель файл, но набор цифровых данных, что в последствии отражает структуру Эксель. Workbook нужен для заполнения его данными, затем при помощи встроенное InputStream, данные могут быть отправлены по cети и интерпретированы как Эксель на стороне клиента. Можно их сразу конвертировать в файл и затем отправить по сети, но это лишний шаг в нашем примере.
@redneck_prm5429
@redneck_prm5429 Жыл бұрын
Так и не понял смысла шаблона в этом примере. У нас есть два (ну или n) разных отчетов, объединенных разве что областью, из которой выдергиваются данные. Но вместо того, чтобы сделать два эндпойнта на апи мы городим кучу абстракций. А в итоге банальное расширение задачи до уровня "начальник хочет иметь возможность получать отчеты по любому менеджеру" приводит к тому, что вместо добавления кнопочки на фронте фронт вынужден дергать бэк для изменения логики обработки контекста в стратегии.
@Jetbulb
@Jetbulb Жыл бұрын
В чем же преимущество создание N-ендпоинтов на каждую хотел, вместо поддерживания абстрактного механизма над ресурсами, что позволяется это. механизм до бесконечности расширять с максимальной изоляцией, малыми затратами и минимальным негативным влиянием на рядом лежащие компоненты?
@sanix183
@sanix183 Жыл бұрын
кому это все адресовано и с какой целью?
@halalcapital
@halalcapital Жыл бұрын
Макс, очень крутой контент! Большой респект! Подскажи где можно найти ментора для первого пет-проекта?
@Jetbulb
@Jetbulb Жыл бұрын
Спасибо за фидбек. Вот знаешь, я сам недавно задумался над этим вопросом. У меня коллега бывшая хочет себя в программировании попробовать и для этого ищет ментора. Собственно и думаем, где его эффективно искать. Пока ответа четкого нет. Как будет, вероятно запишем видео.
@Jetbulb
@Jetbulb Жыл бұрын
Пока ждёшь, лучше начать писать проект, а потом с ментором продолжить. Будет кстати хорошей проверкой "насколько ты сам по себе крут" ))))
@halalcapital
@halalcapital Жыл бұрын
@@Jetbulb было бы круто
@Jetbulb
@Jetbulb Жыл бұрын
@@halalcapital Смелей и выше нос))
@rusalitchannel
@rusalitchannel Жыл бұрын
Будьте добры не убирать примеры кода когда вы говорите о нем, вы показываете его всего 10 секунд. Спасибо!
@Jetbulb
@Jetbulb Жыл бұрын
Да, уже обратил внимание на это. Большое спасибо за замечание 👍
@SergeiCherkai
@SergeiCherkai Жыл бұрын
Макс, ты спалился - "для задротов, готовых упороться" )
@sdsd-ec8rw
@sdsd-ec8rw Жыл бұрын
видео про шаблоны без кода, схем и примеров с цифрами - время на ветер.
@nikolaykozlov4888
@nikolaykozlov4888 3 ай бұрын
Интересно, если граждане имеют право на самоопределение, что же этих граждан 8 лет бомбили из всего что только можно? Эх, какие же вы ещё маленькие...
@DemonCrit
@DemonCrit 7 ай бұрын
не понимаю почему в роликах одно только лицо, почему нельзя показывать код, презу
@user-ek3gg3jq3p
@user-ek3gg3jq3p Жыл бұрын
Крута марка на дошці 💙💛
@oleh_marchenko
@oleh_marchenko Жыл бұрын
А зачем в каждом видео говорить о своем опыте и что ты тот самый сеньор (не риал) помидор девелопер?))
@Jetbulb
@Jetbulb Жыл бұрын
Да, чтобы быть «Синьором ДевелоПэром». В точку 😎 Это просто приветствие и кратко о моем опыте, ничего больше. Был бы «мидлом или джунов» или шахтером, тоже об этом бы говорил. Что такого в том что человек говорит, кто он есть? 😜
@oleh_marchenko
@oleh_marchenko Жыл бұрын
@@Jetbulb На самом деле абсолютно не важно сколько лет опыта и какая лычка, важно лишь как человек мыслит. Можно быть на бумаге джуном, но писать сеньорский код. ;)
@Jetbulb
@Jetbulb Жыл бұрын
@@oleh_marchenko И я с тобой абсолютно согласен))) Но тут не стоит путать приветствие, интро если хочешь с фактами профессиональной деятельности. Если я буду каждому резюме верить, то на работе будем все укомплектованы )) "Доверяй, но проверяй!".
@Favourites250
@Favourites250 Жыл бұрын
Как часть интро на интервью - согласен, про 8 лет опыта полезная инфа) но для познавательного контента на KZfaq говорить об этом в начале и конце каждого видео так себе идея) имхо. Я без хейта если что. Контент супер.
@Jetbulb
@Jetbulb Жыл бұрын
​@@Favourites250 Да я понимаю, что без хейта)) Просто интересна твоя позиция, также выкладываю свои мысли. В любом случае, интро еще в процессе формирования и полагаю не раз поменяется. Респект)
@Fr0stWind
@Fr0stWind Жыл бұрын
ммм, политота пошла...
@A1xarT
@A1xarT Жыл бұрын
Для тебя политота, для українців война
@hondas_insights
@hondas_insights Жыл бұрын
Спасибо за контент! Появились вопросы по видео: 13:48 Типичный сеттер, согласен. А в коде ошибка или я чего-то не понимаю? public void setStrategy() { this.strategy = strategy } разве тут не должен быть параметр типа DeviceOnPermiceReportStrategy? и второй впрос, тоже про контекст: разве у метода executeStrategy в данном случае не должен быть тип возвращаемого значения - void?
@kolyuchkin
@kolyuchkin Жыл бұрын
Ответом на первый вопрос, скорее всего, будет - опечатка. А вот на второй вопрос, лично мое мнение, логично было бы возвращать "фучу", чтоб добавить асинхронщины в код и не тормозить бизнес-процессы, в частности, и пользовательский интерфейс, в целом.
@Jetbulb
@Jetbulb Жыл бұрын
Спасибо за фидбек. 1 и 2 - это опечатки. С этим видео было много сложностей. Не уследили :( Будем исправляться и сорян. У сеттера должен быть параметр, а у executeStrategy возвращаемый тип void.
@hondas_insights
@hondas_insights Жыл бұрын
@@Jetbulb Спасибо, теперь всё понятно. Просто я ещё учусь, поэтому засомневался
@Jetbulb
@Jetbulb Жыл бұрын
@@hondas_insights И тебе спасибо за внимательность))