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

Sdílet
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

Komentáře • 83

  • @arahnid_9844
    @arahnid_9844 Před rokem +10

    Привет, Максим. Спасибо большое. В значительной степени именно благодаря твоим видео с тестовыми интервью, сегодня по результатам первого же своего собеседования получил оффер)

  • @nikolaymatvienko1090
    @nikolaymatvienko1090 Před rokem +4

    Максим, круто, что читаешь комментарии в телеграмме и прислушиваешься к ним 👍

  • @fanatique2568
    @fanatique2568 Před rokem +1

    Спасибо. Все доходчиво и увлекательно)

  • @denys7995
    @denys7995 Před rokem +2

    Максим, спасибо за видео, как всегда на высшем уровне

  • @ktotam8913
    @ktotam8913 Před rokem +9

    К нам по блату на работу привели парня, он окончил универ по специальности учитель информатики, я в шутку спросил, сколько в байте бит, он ответил, что физику особо не помнит, на следующий день его уволили.
    Прими к сведению для вопросов на собеседовании🤭

    • @Jetbulb
      @Jetbulb  Před rokem +3

      Под столом в слезах xD
      А главное... очень быстрая история))

    • @TeuFortMan
      @TeuFortMan Před rokem

      он дурак! Все знают что бит в байте столько же, сколько и игроков в матче!

  • @kerlaeda3856
    @kerlaeda3856 Před rokem +6

    Полезный ролик. Но хотелось бы что бы принты кода если ты о них говоришь, дольше бы показывались по таймингу.

    • @Jetbulb
      @Jetbulb  Před rokem +1

      Тоже обратил на это внимание. Учтем.
      Спасибо за фидбек))

    • @user-on4ce8fg8s
      @user-on4ce8fg8s Před rokem

      @@Jetbulb тоже хотелось бы дольше, а ещё было бы круто закинуть код на гит и диаграммы, так удобнее думать над решением, чем держать всё в голове)

  • @pineapple_lemonade
    @pineapple_lemonade Před rokem +6

    Особенно эта штука круто выглядит в спринге, в другом виде немного конечно, когда мы можем объявить бин который будет мапой, в итоге при добавлении нового бина стратегии он будет в мапу инжектиться автоматом, тут уже до бесконечности расширяй считай

    • @Jetbulb
      @Jetbulb  Před rokem

      Это правда. Спринг своими фичами нам упрощает жизнь во многом.)))

  • @anjelomanoranjan
    @anjelomanoranjan Před 5 měsíci +1

    Спасибо тебе, Макс! Ты крут! Побольше выпускай видео!

  • @RushHour-tb8cg
    @RushHour-tb8cg Před rokem +1

    Полезно, лайк

  • @user-og2ti2wd5o
    @user-og2ti2wd5o Před rokem +1

    Дякую, чоловіче!

  • @dmitrypetrov4399
    @dmitrypetrov4399 Před rokem +1

    Оу май :)) Спасибо!)

  • @vitaliiboichuk8287
    @vitaliiboichuk8287 Před rokem +3

    Було дуже цікаво, дякую)

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Před rokem +1

    Спасибо

  • @user-kg6yq1cv6r
    @user-kg6yq1cv6r Před rokem +3

    Я думаю в решений есть шаблон проектирования "Шаблонный метод".

  • @shadowspirit6459
    @shadowspirit6459 Před rokem +1

    о, Вот это интересненько будет

  • @sonialakhotska1171
    @sonialakhotska1171 Před rokem +1

    Самое крутое - видео действительно интересно смотреть.

  • @user-lz2ob9vf7v
    @user-lz2ob9vf7v Před rokem +1

    Дякую, Макс :)

  • @devdev8158
    @devdev8158 Před rokem +2

    Хороший пример. Впервые встретился со стратегий в разрезе фильтрации данных, а не их обработки.
    Контекст конечно же может быть сложнее чем просто вызов стратегий. У меня в проекте в нем делалась предварительная подготовка данных, после делегирование вызова стратегиям, где непосредственно была обработка.
    Самое интересное - контекст контекста) Там, где происходит создание стратегии. В зависимости от сложности задачи можно натолкнуться и на другие шаблоны, например, абстрактную фабрику.
    Подача материала супер! Спасибо!)

    • @Jetbulb
      @Jetbulb  Před rokem +1

      Отличный пример))
      Мы кстати в этом направлении и двигаемся))

  • @aziztolearn
    @aziztolearn Před rokem +2

    Здравствуйте Максим, хотел бы спросить не мог ли бы создать видео про Dto(data transfer object) как использовать? Где использовать? Где не использовать?

    • @Jetbulb
      @Jetbulb  Před rokem +1

      Привет!
      Подумаем над этим преложением.
      Идея хорошая))

  • @andreyshipul6300
    @andreyshipul6300 Před rokem +1

    Я думаю в решений есть шаблон проектирования "Цепочка обязанностей".

  • @OleksandrDadizha
    @OleksandrDadizha Před rokem +1

    Класна картинка на фоні) Змістовний урок, але, будь ласка, тримайте завжди, або більшу частину часу зображення коду на екрані, так краще засвоюється інформація, бо після коду йде пояснення і потрібно повертатися щоб зрозуміти, дякую.

    • @Jetbulb
      @Jetbulb  Před rokem +1

      Дякую))
      Зауваження та пропозиції прийнято до уваги.
      Респект 👍

  • @user-mh3me8ym9b
    @user-mh3me8ym9b Před rokem +2

    На 13:28 в setStrategy() пропущен параметр, д .б. setStrategy(DeviceOnPremiseReportStrategy strategy) 🙂 Спасибо, за ролик. Смотрел тебя, перед собеседованиями, что помогло мне чувствовать себя более уверенно.

    • @Jetbulb
      @Jetbulb  Před rokem +1

      Тут как раз новый про Builder вышел)
      Спасибо за смотришь нас. Респект 👍

  • @halalcapital
    @halalcapital Před rokem +1

    Макс, а можешь рассказать про ценообразования в IT (ТОП 10 сервисов, приложении и т.п?
    Очень интересно узнать про это.

    • @Jetbulb
      @Jetbulb  Před rokem

      Сорян, но не сильно понял твой запрос)))
      Ценообразование широкая вещь, как и сервисы.
      В общем я так и не понял, что именно ты хотел бы услышать.
      Поясни плз.

    • @halalcapital
      @halalcapital Před rokem +1

      @@Jetbulb ну к примеру, сколько стоит создание сайта агрегатора магазинов товаров и услуг с моб. приложениями? или какого нибудь корпоративного портала

    • @Jetbulb
      @Jetbulb  Před rokem +2

      @@halalcapital
      Широко замахнулся))
      Теперь понял. Тема действительно интересная.
      Займусь сбором материала для такого видео.
      Спасибо за идею!

  • @user-jf5ej9qe8d
    @user-jf5ej9qe8d Před rokem +1

    Сделай видео про брокеры сообщений и как ими можно эффективно пользоваться)

    • @Jetbulb
      @Jetbulb  Před rokem

      Хорошая мысль. Записал.
      Спасибо за совет)))

  • @edmond-dantes-1796
    @edmond-dantes-1796 Před rokem +2

    А каким образом мы избавились от switch/if else? Скорее всего нам будет приходить запрос с фронта на какой то эндпоинт с параметром для репорта. И нам в зависимости от параметра нужно создавать конкретный экземпляр, то есть switch. Или же у нас будет несколько эндпоинтов на каждый параметр и пусть фронт с этим разбирактся? Тоже плохо, ведь это дублирование кода как минимум.

    • @tiy2000
      @tiy2000 Před rokem +2

      В комменте выше про мапу сказано)

    • @Jetbulb
      @Jetbulb  Před rokem +1

      Отличный вопрос.
      Это мы все узнаем в следующих выпусках :)
      Если кратко, процесс создания стратегий отдельная тема и в концепцию этого шаблона не вкладывается. Потому все будет дальше, как я и сказал в видео с намеком на другие шаблоны.

  • @user-zn8xr3en6i
    @user-zn8xr3en6i Před rokem +1

    Можно было реализовать через spring. Внедрить зависимости в конструкторе интерфейса Стратегии и записать в мапу по какому либо признаку. Потом из мапы доставать и что-то делать

    • @user-zn8xr3en6i
      @user-zn8xr3en6i Před rokem +1

      Вижу еще "Спецификация" паттерн в findAll

    • @Jetbulb
      @Jetbulb  Před rokem

      @@user-zn8xr3en6i Не угадал))
      Хотя близко))

    • @Jetbulb
      @Jetbulb  Před rokem

      Спринг это только тюнинг в этом смысле.
      Но вариант тоже ок.

    • @user-zn8xr3en6i
      @user-zn8xr3en6i Před rokem +1

      @@Jetbulb там ещё критерией его называют,кто как. Я просто когда спецификацию смотрел,я видел примеры использования в репозиториях. Но я больше на сложные ифы ее использую

  • @antonpotuzhniy2995
    @antonpotuzhniy2995 Před rokem +1

    все круто но мало кода и нет примеров,точнее нет кода

    • @Jetbulb
      @Jetbulb  Před rokem +2

      Может просто ожидания от видео были немного другие или под кодом подразумевает часть проекта.
      Я немного в замешательства)))
      Как бы там ни было, думаю что сделать более "насыщенным кодом" отличная мысль.
      Поработаю над этим в следующем выпуске.
      Респект.

  • @nox7716
    @nox7716 Před rokem +1

    #БерегитеДжунов

  • @sanix183
    @sanix183 Před rokem

    кому это все адресовано и с какой целью?

  • @John_Smith_Java
    @John_Smith_Java Před rokem

    Интересно посмотреть. А то я думал, что стратегия - это Герои меча и магии.

  • @user-qm8qh4xq6i
    @user-qm8qh4xq6i Před rokem +1

    Не совсем понятно, зачем workbook (будущий эксель файл) передается в качестве параметра методу execute.

    • @Jetbulb
      @Jetbulb  Před rokem +1

      Чтобы внутри заполнять его данными.
      После обработки из workbook извлекается поток данных и уже уходит «по проводам» для скачивания.

    • @user-qm8qh4xq6i
      @user-qm8qh4xq6i Před rokem

      @@Jetbulb передается пустой эксель файл? почему его не создать там, где будем заполнять?
      "извлекается поток данных" - результирующая выборка передается не в эксель?
      Спасибо за ответы.

    • @Jetbulb
      @Jetbulb  Před rokem

      ​@@user-qm8qh4xq6i
      Workbook - это не Эксель файл, но набор цифровых данных, что в последствии отражает структуру Эксель. Workbook нужен для заполнения его данными, затем при помощи встроенное InputStream, данные могут быть отправлены по cети и интерпретированы как Эксель на стороне клиента. Можно их сразу конвертировать в файл и затем отправить по сети, но это лишний шаг в нашем примере.

  • @redneck_prm5429
    @redneck_prm5429 Před rokem

    Так и не понял смысла шаблона в этом примере.
    У нас есть два (ну или n) разных отчетов, объединенных разве что областью, из которой выдергиваются данные.
    Но вместо того, чтобы сделать два эндпойнта на апи мы городим кучу абстракций. А в итоге банальное расширение задачи до уровня "начальник хочет иметь возможность получать отчеты по любому менеджеру" приводит к тому, что вместо добавления кнопочки на фронте фронт вынужден дергать бэк для изменения логики обработки контекста в стратегии.

    • @Jetbulb
      @Jetbulb  Před rokem

      В чем же преимущество создание N-ендпоинтов на каждую хотел, вместо поддерживания абстрактного механизма над ресурсами, что позволяется это. механизм до бесконечности расширять с максимальной изоляцией, малыми затратами и минимальным негативным влиянием на рядом лежащие компоненты?

  • @halalcapital
    @halalcapital Před rokem +1

    Макс, очень крутой контент! Большой респект!
    Подскажи где можно найти ментора для первого пет-проекта?

    • @Jetbulb
      @Jetbulb  Před rokem +1

      Спасибо за фидбек.
      Вот знаешь, я сам недавно задумался над этим вопросом.
      У меня коллега бывшая хочет себя в программировании попробовать и для этого ищет ментора.
      Собственно и думаем, где его эффективно искать.
      Пока ответа четкого нет.
      Как будет, вероятно запишем видео.

    • @Jetbulb
      @Jetbulb  Před rokem

      Пока ждёшь, лучше начать писать проект, а потом с ментором продолжить.
      Будет кстати хорошей проверкой "насколько ты сам по себе крут" ))))

    • @halalcapital
      @halalcapital Před rokem +1

      @@Jetbulb было бы круто

    • @Jetbulb
      @Jetbulb  Před rokem +1

      @@halalcapital Смелей и выше нос))

  • @rusalitchannel
    @rusalitchannel Před rokem +1

    Будьте добры не убирать примеры кода когда вы говорите о нем, вы показываете его всего 10 секунд. Спасибо!

    • @Jetbulb
      @Jetbulb  Před rokem +2

      Да, уже обратил внимание на это.
      Большое спасибо за замечание 👍

  • @SergeiCherkai
    @SergeiCherkai Před rokem +2

    Макс, ты спалился - "для задротов, готовых упороться" )

  • @sdsd-ec8rw
    @sdsd-ec8rw Před rokem +2

    видео про шаблоны без кода, схем и примеров с цифрами - время на ветер.

  • @DemonCrit
    @DemonCrit Před 7 měsíci

    не понимаю почему в роликах одно только лицо, почему нельзя показывать код, презу

  • @oleh_marchenko
    @oleh_marchenko Před rokem +1

    А зачем в каждом видео говорить о своем опыте и что ты тот самый сеньор (не риал) помидор девелопер?))

    • @Jetbulb
      @Jetbulb  Před rokem +3

      Да, чтобы быть «Синьором ДевелоПэром».
      В точку 😎
      Это просто приветствие и кратко о моем опыте, ничего больше.
      Был бы «мидлом или джунов» или шахтером, тоже об этом бы говорил.
      Что такого в том что человек говорит, кто он есть? 😜

    • @oleh_marchenko
      @oleh_marchenko Před rokem +1

      @@Jetbulb На самом деле абсолютно не важно сколько лет опыта и какая лычка, важно лишь как человек мыслит. Можно быть на бумаге джуном, но писать сеньорский код. ;)

    • @Jetbulb
      @Jetbulb  Před rokem +2

      @@oleh_marchenko
      И я с тобой абсолютно согласен)))
      Но тут не стоит путать приветствие, интро если хочешь с фактами профессиональной деятельности.
      Если я буду каждому резюме верить, то на работе будем все укомплектованы ))
      "Доверяй, но проверяй!".

    • @Favourites250
      @Favourites250 Před rokem +1

      Как часть интро на интервью - согласен, про 8 лет опыта полезная инфа) но для познавательного контента на CZcams говорить об этом в начале и конце каждого видео так себе идея) имхо.
      Я без хейта если что.
      Контент супер.

    • @Jetbulb
      @Jetbulb  Před rokem +1

      ​@@Favourites250
      Да я понимаю, что без хейта))
      Просто интересна твоя позиция, также выкладываю свои мысли.
      В любом случае, интро еще в процессе формирования и полагаю не раз поменяется.
      Респект)

  • @user-ek3gg3jq3p
    @user-ek3gg3jq3p Před rokem +3

    Крута марка на дошці 💙💛

  • @Fr0stWind
    @Fr0stWind Před rokem

    ммм, политота пошла...

    • @A1xarT
      @A1xarT Před rokem

      Для тебя политота, для українців война

  • @nikolaykozlov4888
    @nikolaykozlov4888 Před 3 měsíci

    Интересно, если граждане имеют право на самоопределение, что же этих граждан 8 лет бомбили из всего что только можно? Эх, какие же вы ещё маленькие...

  • @hondas_insights
    @hondas_insights Před rokem +1

    Спасибо за контент! Появились вопросы по видео: 13:48 Типичный сеттер, согласен. А в коде ошибка или я чего-то не понимаю?
    public void setStrategy() {
    this.strategy = strategy
    }
    разве тут не должен быть параметр типа DeviceOnPermiceReportStrategy?
    и второй впрос, тоже про контекст: разве у метода executeStrategy в данном случае не должен быть тип возвращаемого значения - void?

    • @kolyuchkin
      @kolyuchkin Před rokem

      Ответом на первый вопрос, скорее всего, будет - опечатка. А вот на второй вопрос, лично мое мнение, логично было бы возвращать "фучу", чтоб добавить асинхронщины в код и не тормозить бизнес-процессы, в частности, и пользовательский интерфейс, в целом.

    • @Jetbulb
      @Jetbulb  Před rokem +1

      Спасибо за фидбек.
      1 и 2 - это опечатки. С этим видео было много сложностей. Не уследили :(
      Будем исправляться и сорян.
      У сеттера должен быть параметр, а у executeStrategy возвращаемый тип void.

    • @hondas_insights
      @hondas_insights Před rokem +1

      @@Jetbulb Спасибо, теперь всё понятно. Просто я ещё учусь, поэтому засомневался

    • @Jetbulb
      @Jetbulb  Před rokem +1

      @@hondas_insights
      И тебе спасибо за внимательность))