Что ты знаешь о шаблоне проектирования "Стратегия"? Разбираем на реальном проекте | Jetbulb
Vložit
- čas přidán 25. 07. 2024
- Разбираем шаблон проектирования "Стратегия", реализованный на основе бизнес-задачи из реального проекта.
Программа:
00:00 Введение
02:30 Бизнес-задача
06:10 Что такое Стратегия
10:22 Реализация шаблона проектирования Стратегия
18:20 Как применять шаблоны проектирования
21:06 Заключение
Наш сайт:
jetbulb.com/
interview.jetbulb.com/
Мы в социальных сетях:
t.me/jetbulb
Привет, Максим. Спасибо большое. В значительной степени именно благодаря твоим видео с тестовыми интервью, сегодня по результатам первого же своего собеседования получил оффер)
Максим, круто, что читаешь комментарии в телеграмме и прислушиваешься к ним 👍
Спасибо. Все доходчиво и увлекательно)
Максим, спасибо за видео, как всегда на высшем уровне
К нам по блату на работу привели парня, он окончил универ по специальности учитель информатики, я в шутку спросил, сколько в байте бит, он ответил, что физику особо не помнит, на следующий день его уволили.
Прими к сведению для вопросов на собеседовании🤭
Под столом в слезах xD
А главное... очень быстрая история))
он дурак! Все знают что бит в байте столько же, сколько и игроков в матче!
Полезный ролик. Но хотелось бы что бы принты кода если ты о них говоришь, дольше бы показывались по таймингу.
Тоже обратил на это внимание. Учтем.
Спасибо за фидбек))
@@Jetbulb тоже хотелось бы дольше, а ещё было бы круто закинуть код на гит и диаграммы, так удобнее думать над решением, чем держать всё в голове)
Особенно эта штука круто выглядит в спринге, в другом виде немного конечно, когда мы можем объявить бин который будет мапой, в итоге при добавлении нового бина стратегии он будет в мапу инжектиться автоматом, тут уже до бесконечности расширяй считай
Это правда. Спринг своими фичами нам упрощает жизнь во многом.)))
Спасибо тебе, Макс! Ты крут! Побольше выпускай видео!
Полезно, лайк
Дякую, чоловіче!
Оу май :)) Спасибо!)
Було дуже цікаво, дякую)
Спасибо
Я думаю в решений есть шаблон проектирования "Шаблонный метод".
В точку
о, Вот это интересненько будет
Самое крутое - видео действительно интересно смотреть.
Дякую, Макс :)
Хороший пример. Впервые встретился со стратегий в разрезе фильтрации данных, а не их обработки.
Контекст конечно же может быть сложнее чем просто вызов стратегий. У меня в проекте в нем делалась предварительная подготовка данных, после делегирование вызова стратегиям, где непосредственно была обработка.
Самое интересное - контекст контекста) Там, где происходит создание стратегии. В зависимости от сложности задачи можно натолкнуться и на другие шаблоны, например, абстрактную фабрику.
Подача материала супер! Спасибо!)
Отличный пример))
Мы кстати в этом направлении и двигаемся))
Здравствуйте Максим, хотел бы спросить не мог ли бы создать видео про Dto(data transfer object) как использовать? Где использовать? Где не использовать?
Привет!
Подумаем над этим преложением.
Идея хорошая))
Я думаю в решений есть шаблон проектирования "Цепочка обязанностей".
Класна картинка на фоні) Змістовний урок, але, будь ласка, тримайте завжди, або більшу частину часу зображення коду на екрані, так краще засвоюється інформація, бо після коду йде пояснення і потрібно повертатися щоб зрозуміти, дякую.
Дякую))
Зауваження та пропозиції прийнято до уваги.
Респект 👍
На 13:28 в setStrategy() пропущен параметр, д .б. setStrategy(DeviceOnPremiseReportStrategy strategy) 🙂 Спасибо, за ролик. Смотрел тебя, перед собеседованиями, что помогло мне чувствовать себя более уверенно.
Тут как раз новый про Builder вышел)
Спасибо за смотришь нас. Респект 👍
Макс, а можешь рассказать про ценообразования в IT (ТОП 10 сервисов, приложении и т.п?
Очень интересно узнать про это.
Сорян, но не сильно понял твой запрос)))
Ценообразование широкая вещь, как и сервисы.
В общем я так и не понял, что именно ты хотел бы услышать.
Поясни плз.
@@Jetbulb ну к примеру, сколько стоит создание сайта агрегатора магазинов товаров и услуг с моб. приложениями? или какого нибудь корпоративного портала
@@halalcapital
Широко замахнулся))
Теперь понял. Тема действительно интересная.
Займусь сбором материала для такого видео.
Спасибо за идею!
Сделай видео про брокеры сообщений и как ими можно эффективно пользоваться)
Хорошая мысль. Записал.
Спасибо за совет)))
А каким образом мы избавились от switch/if else? Скорее всего нам будет приходить запрос с фронта на какой то эндпоинт с параметром для репорта. И нам в зависимости от параметра нужно создавать конкретный экземпляр, то есть switch. Или же у нас будет несколько эндпоинтов на каждый параметр и пусть фронт с этим разбирактся? Тоже плохо, ведь это дублирование кода как минимум.
В комменте выше про мапу сказано)
Отличный вопрос.
Это мы все узнаем в следующих выпусках :)
Если кратко, процесс создания стратегий отдельная тема и в концепцию этого шаблона не вкладывается. Потому все будет дальше, как я и сказал в видео с намеком на другие шаблоны.
Можно было реализовать через spring. Внедрить зависимости в конструкторе интерфейса Стратегии и записать в мапу по какому либо признаку. Потом из мапы доставать и что-то делать
Вижу еще "Спецификация" паттерн в findAll
@@user-zn8xr3en6i Не угадал))
Хотя близко))
Спринг это только тюнинг в этом смысле.
Но вариант тоже ок.
@@Jetbulb там ещё критерией его называют,кто как. Я просто когда спецификацию смотрел,я видел примеры использования в репозиториях. Но я больше на сложные ифы ее использую
все круто но мало кода и нет примеров,точнее нет кода
Может просто ожидания от видео были немного другие или под кодом подразумевает часть проекта.
Я немного в замешательства)))
Как бы там ни было, думаю что сделать более "насыщенным кодом" отличная мысль.
Поработаю над этим в следующем выпуске.
Респект.
#БерегитеДжунов
💙
кому это все адресовано и с какой целью?
Интересно посмотреть. А то я думал, что стратегия - это Герои меча и магии.
Не совсем понятно, зачем workbook (будущий эксель файл) передается в качестве параметра методу execute.
Чтобы внутри заполнять его данными.
После обработки из workbook извлекается поток данных и уже уходит «по проводам» для скачивания.
@@Jetbulb передается пустой эксель файл? почему его не создать там, где будем заполнять?
"извлекается поток данных" - результирующая выборка передается не в эксель?
Спасибо за ответы.
@@user-qm8qh4xq6i
Workbook - это не Эксель файл, но набор цифровых данных, что в последствии отражает структуру Эксель. Workbook нужен для заполнения его данными, затем при помощи встроенное InputStream, данные могут быть отправлены по cети и интерпретированы как Эксель на стороне клиента. Можно их сразу конвертировать в файл и затем отправить по сети, но это лишний шаг в нашем примере.
Так и не понял смысла шаблона в этом примере.
У нас есть два (ну или n) разных отчетов, объединенных разве что областью, из которой выдергиваются данные.
Но вместо того, чтобы сделать два эндпойнта на апи мы городим кучу абстракций. А в итоге банальное расширение задачи до уровня "начальник хочет иметь возможность получать отчеты по любому менеджеру" приводит к тому, что вместо добавления кнопочки на фронте фронт вынужден дергать бэк для изменения логики обработки контекста в стратегии.
В чем же преимущество создание N-ендпоинтов на каждую хотел, вместо поддерживания абстрактного механизма над ресурсами, что позволяется это. механизм до бесконечности расширять с максимальной изоляцией, малыми затратами и минимальным негативным влиянием на рядом лежащие компоненты?
Макс, очень крутой контент! Большой респект!
Подскажи где можно найти ментора для первого пет-проекта?
Спасибо за фидбек.
Вот знаешь, я сам недавно задумался над этим вопросом.
У меня коллега бывшая хочет себя в программировании попробовать и для этого ищет ментора.
Собственно и думаем, где его эффективно искать.
Пока ответа четкого нет.
Как будет, вероятно запишем видео.
Пока ждёшь, лучше начать писать проект, а потом с ментором продолжить.
Будет кстати хорошей проверкой "насколько ты сам по себе крут" ))))
@@Jetbulb было бы круто
@@halalcapital Смелей и выше нос))
Будьте добры не убирать примеры кода когда вы говорите о нем, вы показываете его всего 10 секунд. Спасибо!
Да, уже обратил внимание на это.
Большое спасибо за замечание 👍
Макс, ты спалился - "для задротов, готовых упороться" )
видео про шаблоны без кода, схем и примеров с цифрами - время на ветер.
не понимаю почему в роликах одно только лицо, почему нельзя показывать код, презу
А зачем в каждом видео говорить о своем опыте и что ты тот самый сеньор (не риал) помидор девелопер?))
Да, чтобы быть «Синьором ДевелоПэром».
В точку 😎
Это просто приветствие и кратко о моем опыте, ничего больше.
Был бы «мидлом или джунов» или шахтером, тоже об этом бы говорил.
Что такого в том что человек говорит, кто он есть? 😜
@@Jetbulb На самом деле абсолютно не важно сколько лет опыта и какая лычка, важно лишь как человек мыслит. Можно быть на бумаге джуном, но писать сеньорский код. ;)
@@oleh_marchenko
И я с тобой абсолютно согласен)))
Но тут не стоит путать приветствие, интро если хочешь с фактами профессиональной деятельности.
Если я буду каждому резюме верить, то на работе будем все укомплектованы ))
"Доверяй, но проверяй!".
Как часть интро на интервью - согласен, про 8 лет опыта полезная инфа) но для познавательного контента на CZcams говорить об этом в начале и конце каждого видео так себе идея) имхо.
Я без хейта если что.
Контент супер.
@@Favourites250
Да я понимаю, что без хейта))
Просто интересна твоя позиция, также выкладываю свои мысли.
В любом случае, интро еще в процессе формирования и полагаю не раз поменяется.
Респект)
Крута марка на дошці 💙💛
ммм, политота пошла...
Для тебя политота, для українців война
Интересно, если граждане имеют право на самоопределение, что же этих граждан 8 лет бомбили из всего что только можно? Эх, какие же вы ещё маленькие...
Спасибо за контент! Появились вопросы по видео: 13:48 Типичный сеттер, согласен. А в коде ошибка или я чего-то не понимаю?
public void setStrategy() {
this.strategy = strategy
}
разве тут не должен быть параметр типа DeviceOnPermiceReportStrategy?
и второй впрос, тоже про контекст: разве у метода executeStrategy в данном случае не должен быть тип возвращаемого значения - void?
Ответом на первый вопрос, скорее всего, будет - опечатка. А вот на второй вопрос, лично мое мнение, логично было бы возвращать "фучу", чтоб добавить асинхронщины в код и не тормозить бизнес-процессы, в частности, и пользовательский интерфейс, в целом.
Спасибо за фидбек.
1 и 2 - это опечатки. С этим видео было много сложностей. Не уследили :(
Будем исправляться и сорян.
У сеттера должен быть параметр, а у executeStrategy возвращаемый тип void.
@@Jetbulb Спасибо, теперь всё понятно. Просто я ещё учусь, поэтому засомневался
@@hondas_insights
И тебе спасибо за внимательность))