ЭТОТ Паттерн Спрашивают на 99% Собесов

Поділитися
Вставка
  • Опубліковано 20 вер 2024

КОМЕНТАРІ • 119

  • @lelikpunk1
    @lelikpunk1 2 дні тому +53

    А будут видео именно про объяснение разных паттернов? Было бы круто))

    • @nehz_ttv
      @nehz_ttv 2 дні тому +1

      Я тоже хочу больше такого контента!

    • @kvasela
      @kvasela 2 дні тому +1

      Например GRASP, SOLID

    • @lelikpunk1
      @lelikpunk1 2 дні тому +2

      Я об порождающих, структурных и поведенческих)

    • @iha206
      @iha206 День тому

      @@kvaselaпро solid есть видео. Всё четко на примерах разобрано.

    • @evan_kirk
      @evan_kirk День тому

      @@kvasela SOLID это принципы, а не паттерны.

  • @stanislavkuprienko6475
    @stanislavkuprienko6475 2 дні тому +9

    Круто 👍 Спасибо тебе, Влад, за контент. И всё таки, выпуск про Redis ждём)

  • @followthewhiterabbit982
    @followthewhiterabbit982 2 дні тому +2

    Отлично! Давай продолжать разбирать паттерны в таком же формате!

  • @hurricane-rus
    @hurricane-rus 2 дні тому +4

    Я наконец понял, как называлось то, что часто применял в своих проектах, но не знал, что у этого есть отдельное название)

    • @alexgavril385
      @alexgavril385 2 дні тому

      Можно где то ваши проекты скачать или посмотреть в интернете?😂

    • @root-developer
      @root-developer День тому

      @@alexgavril385 ты что это секретные пет проекты под NDA

  • @dryadliker
    @dryadliker 2 дні тому

    Отличное видео! Всё понятно. Поймал себя на мысли, что никогда так захватывающе не смог бы объяснять паттерны программирования😁

  • @michelleasrolabus1533
    @michelleasrolabus1533 День тому

    Супер объяснение! И графика оболденная!!! Спасибо за видео большое!
    Жду других патернов!!! Можно было бы целый плей лист! Еще раз спасибо!

  • @user-do5ud7hh5y
    @user-do5ud7hh5y 2 дні тому +2

    Спасибо , интересный урок . Возможно ты сделаешь еще видео про другие паттерны

  • @fakng-engineer
    @fakng-engineer  2 дні тому

    БЕСПЛАТНЫЙ ВЕБ “Основы Spring для начинающих Java Junior” 24.09.24 в 19:00 по МСК! Регистрируйтесь по ссылке: www.faang.school/vebinar-spring?

  • @wil9921
    @wil9921 День тому +2

    Очень круто) но как нам после создания нового наблюдателя добавить его в лист наблюдателей PostSaver?

  • @slevin31231
    @slevin31231 День тому

    Понравилось! Рассказывай еще про паттерны)

  • @nnz13
    @nnz13 2 дні тому +2

    Но ведь наблюдатель добавления рекламы в пост должен менять сам пост, поэтому он должен выполниться самым первым, а это уже декоратор какой-то

    • @hakooplayplay3212
      @hakooplayplay3212 День тому

      если он меняет сам пост, а не просто реагирует на него, то это не обсервер :) Это происходит на этапе создания и сохранения поста, то есть до того как мы создаем событие

  • @oraxis7372
    @oraxis7372 17 годин тому

    Объяснение и анимации топ. Очень хочется видео и про другие паттерны)

  • @TheDustyChannel3334
    @TheDustyChannel3334 4 години тому +1

    Зарегистрироваться на вебинар невозможно, форма внизу не отображается, только призыв написан.

  • @ОльгаЛукина-о9в
    @ОльгаЛукина-о9в 2 дні тому

    супер объяснение! запишите еще такие же видео про другие паттерны, пожалуйста

  • @user-fz3rk8qv1d
    @user-fz3rk8qv1d 9 годин тому

    у тебя прям талант объяснять коротко и ясно

  • @PaulDeVille
    @PaulDeVille День тому

    Очень доступным языком объяснил. Круто!🔥

  • @BoyarinLex
    @BoyarinLex День тому

    Огонь! Очень полезное и понятное видео, спасибо!

  • @alexanderkuznetsov634
    @alexanderkuznetsov634 2 дні тому +1

    звук печатающей машинки в левом ухе честно отвлекает

  • @ТестировщикНиконов

    Влад, спасибо! Хорошее объяснение. Даже я понял:)

  • @AndreyJDev
    @AndreyJDev 2 дні тому +5

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

    • @MrRomanvideo
      @MrRomanvideo 2 дні тому +2

      Это не паттерн😅

    • @ВысоцкийАндрей-г5э
      @ВысоцкийАндрей-г5э 2 дні тому +4

      Солид это принцип. А он говорит про штуку которая у черепахи на спине

    • @koller18
      @koller18 День тому +1

      @@ВысоцкийАндрей-г5э , штука у черепахи на спине панцирь, а он говорит о каком то непрерывном потоке слов

    • @BurmAlex
      @BurmAlex 13 годин тому

      Dependency Injection/Inversion?

  • @ВасилийГоловко-д9и

    Один из моих любимых шаблонов - часто его использую. Еще есть стратегия, тоже круто паттерн

  • @trimaid9871
    @trimaid9871 2 дні тому +1

    Круто. На самом деле прикольно будет узнать это на практисе. Жаль что я не Java, но и на шарпе интересно)

    • @MrRomanvideo
      @MrRomanvideo 2 дні тому +2

      Одно и тоже

    • @gibbedhead
      @gibbedhead День тому +2

      Уж шарпист-то java, и наоборот, может читать как никто другой.

    • @hakooplayplay3212
      @hakooplayplay3212 День тому

      Я чуть чаем не подавился когда в конце таки сказал что ты шарпист :D ахах, тролль 80го уровня

    • @BurmAlex
      @BurmAlex 13 годин тому

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

  • @prosvet7731
    @prosvet7731 18 годин тому

    + За паттерны, у тебя хорошо получается)

  • @andrew-ld1jg
    @andrew-ld1jg 2 дні тому +1

    Жаль что стрима на youtube нет😢

  • @ЮрийДымов-у6щ
    @ЮрийДымов-у6щ 2 дні тому +5

    Сингальтон

  • @СашаИванов-д8щ2ь
    @СашаИванов-д8щ2ь 2 дні тому

    четко расскзал, про паттерн "посетитель" (visitor) расскажи так же

  • @Inos25
    @Inos25 День тому

    Влад, спасибо за объяснение! Ты крутой 🔥

  • @user-fz3rk8qv1d
    @user-fz3rk8qv1d 9 годин тому

    чувак, ты офигенный ! )

  • @albanec4702
    @albanec4702 День тому

    прекрасный ролик - ставлю класс!)

  • @viktor.florinskiy
    @viktor.florinskiy День тому +1

    класс постов нарушает srp из solid

  • @ruslanm.1120
    @ruslanm.1120 5 годин тому

    Какой паттерн будет собирать всех наблюдателей в один список?

  • @decimaldelimiter587
    @decimaldelimiter587 2 дні тому +1

    По-моему, самый популярный - синглтон.

    • @ВысоцкийАндрей-г5э
      @ВысоцкийАндрей-г5э День тому +1

      @@decimaldelimiter587 говорю по опыту недавно пройденного собеса - когда спросят про паттерны скажи не про фабрику, не про биллер и не про синглтон. Все про них говорят так как они самые очевидные. Скажи про dto например, он в каждом круде применяется и ла это тоже принцип, на моем собесе это оценили. Про враппер ака обертка скажи, или про штуку из видео. Это прям хорошо влияет. Можно сказать в начале про вышеперечисленные, а банальные в конце насыпать просто мол "ну ещё банальные х,у,z но че про них рассказывать и так все знают

    • @hakooplayplay3212
      @hakooplayplay3212 День тому

      @@ВысоцкийАндрей-г5э согласен :) про синглтон можно упомянуть если уже назвал штук 5 паттернов :) так до кучи

    • @decimaldelimiter587
      @decimaldelimiter587 День тому

      @@ВысоцкийАндрей-г5э Я ж не говорю, что он самый эффектный для собеседования; скорее, наоборот - один из самых тривиальных (=популярных).

  • @dimaskusidze
    @dimaskusidze 2 дні тому +2

    Подскажите пожалуйста , а как наблюдатели дружно запрыгивают в list класса PostSaver?? Им же надо там откуда-то взяться ...

    • @gibbedhead
      @gibbedhead День тому +2

      Я совсем не спец, но тоже подумал что зря он не объяснил этот момент. По логике, наблюдатель должен подписаться на события, т.е. в публикаторе нужен метод, который добавит наблюдателя в лист.

    • @hakooplayplay3212
      @hakooplayplay3212 День тому

      либо при инициализации приложения всех обсерверов цепляешь, либо можно это динамически через метод класса добавлять-убирать

    • @Khodorisful
      @Khodorisful 12 годин тому

      DI контейнер. Реализация паттерна Inversion of control

    • @dimaskusidze
      @dimaskusidze 2 години тому

      ​@@KhodorisfulТ.е. все наблюдатели у нас бины и они при инициализации листа прыгают в лист ?? Ну тогда это надо в конструкторе класса конкретно прописать каждое добавление экземплярами класса?? Да ещё и тип загрузки прописать как @lazy у каждого компонента ?? А то машина насоздает бинов и запутается в них (((

  • @Grigoren_com
    @Grigoren_com 2 дні тому

    Владик, ты топчик! спасибо!

  • @DeadRabbitCanDance
    @DeadRabbitCanDance 17 годин тому

    Если телеграммом не пользуюсь, то зарегистрироваться не получится? Печально.
    Вообще мне нужно не сайт сделать, а сервер для Unity приложения (хранение данных по игрокам, регистрация всяких операций типа купил/продал/сделал) соответственно база данных и какой-то апи для взаимодействия из Unity.

  • @chrishuen2133
    @chrishuen2133 2 дні тому

    Привет, спасибо за видео. Добавь ещё, как они по-английски называются, чтоб не пришлось отдельно гуглить.

    • @evan_kirk
      @evan_kirk День тому +3

      В видео же видно. Например, наблюдатель - observer

    • @chrishuen2133
      @chrishuen2133 День тому +1

      @@evan_kirk Спасибо. Вообще-то видео миллион и я их слушаю, когда готовлю или жру. Т.к. на работе завал постоянный. Да, сорян, проепала. observer - теперь знаю!

  • @tregubov
    @tregubov 2 дні тому

    чувак, инфа огонь, мерси!

  • @bl-ou2xt
    @bl-ou2xt День тому

    стратегия, наблюдатель, декоратор ...

  • @wladoxa
    @wladoxa 3 години тому

    А зачем держать обсерверы в массиве?: Нельзя как нибудь триггернуть эвент PostSaved....ааа ну наверное это уже через брокер сообщений уже(

  • @uladzimirdrazdou1563
    @uladzimirdrazdou1563 День тому

    Сурер понятно и полезно!

  • @vitaliykolomiets6609
    @vitaliykolomiets6609 2 дні тому

    круто!!! спасибо!!!

  • @andreydyachenko1364
    @andreydyachenko1364 12 годин тому

    Singleton наше все

  • @rkpstam
    @rkpstam 2 дні тому +1

    Сюда бы кафку)

    • @ВысоцкийАндрей-г5э
      @ВысоцкийАндрей-г5э День тому

      @@rkpstam да это буквально она и естьив глобальном смысле. Кафкато реализация данного принципа

    • @abbze8272
      @abbze8272 День тому

      Rmq, kafka, да))
      Там и слушатели и эвенты

  • @pavlo1c
    @pavlo1c День тому

    в рамках создания поста, новую фичу в список то нужно прописать, а не просто новую создать :)

    • @AndrewBP2k
      @AndrewBP2k День тому

      Список наблюдателей заполняется за пределами PostSaver'а. Тут только ссылка на него.

  • @Fjaieb
    @Fjaieb 16 годин тому

    Разработчик из Амстердама , скажи хватит ли у тебя оперативки на все объекты в твоей «Мега крутой соц сети»? Если бы ты рассказывал это в контексте SOLID принципов, то в целом ок. Но ты суешь это в идее где у тебя будет много событий , а значит у тебя рано или поздно оперативка кончится и привет memoryExeption

    • @Khodorisful
      @Khodorisful 12 годин тому

      Запишет сообщение в брокер сообщений который доставит его получателям на каком угодно количестве серверов. Да и это очень уж нужно постараться чтобы забить память просто инициализацией обьектов)

  • @Happy-s8l1c
    @Happy-s8l1c 14 годин тому

    А когда ты удаляешь коменты, то крутым становишься?

  • @МистерЧеловек-ч3б

    актуалка для меня, лаййййк, подписка

  • @Khodorisful
    @Khodorisful 13 годин тому

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

    • @testdeim
      @testdeim 12 годин тому +1

      Автор видео не понял как работает этот паттерн. Да и вы тоже.
      Если окажется, что уведомления нужно отправлять не на все посты, то одписчик отправляющий уведомления сам может решить это на основе информации из события.
      Как я написал ниже в своём коментарии - PostSaver это по сути модель, если брать архитектуру MVC. Модель ничего не должна знать о подписчиках (вот эти все классы уведомлений, рекламы, статистики). Она должна знать всего об одном классе - классе Наблюдателя. Одного. И после сохранения поста бросать событие в этот Наблюдатель, вы зывая его метод accept(event). А уже Наблюдатель знает кто подписан на принимаемый им тип событий и он отправляет это событие обработчикам (классам работы с уведомнениями, рекламой, статистикой). Таким образом у нас получается чистая модель, код которой мы больше не трогаем.
      Это позволяет использовать её в других местах, для кототых, например, вот эти все уведомления, статистика, реклама не нужны.
      А также эта моель легко покрывается тестами, потому что не содержит в себе лишних классов.

    • @testdeim
      @testdeim 12 годин тому

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

    • @Khodorisful
      @Khodorisful 11 годин тому

      @@testdeim Инжектим PostObserver где прописана логика оповещение что кому и при каких условиях. В PostSaver мы только один раз вызываем PostObserver и передаем туда актуальный объект Post. Это годится если в самом Post есть вся необходимая информация для того чтобы решить уведомлять или нет. Но что если отправка будет зависеть от каких либо других факторов, о которых нет информации в Post? Прокидывать какой то "notify=false" флаг?

    • @testdeim
      @testdeim 11 годин тому

      @@Khodorisful тут либо в ивент добавляем нужную информацию (не обязательно же в ивент кидать весь объект Post и/или только его). Тоесть собираем ивент со всеми нужными данными (хоть весь Post, хоть его часть, хоть ещё чо то кроме него, да хоть бы и тот же notify=false). Но notify=false можно в том случае, если PostSaver обладает информацией о том делать ли уведомление. Но обычно не обладает и не должен. Эту информацию знает (или должен узнавать) непосредственно сам обрабочик события. Если брать в пример уведомления, то класс отправляющий уведомления, принимает событие с постом, понимает из него какого типа этот пост, делает запрос в хранилище пользователей у которых настройка "получать уведомления" и им отправляет эти уведомления. Ни сам PostSaver, ни Наблюдатель ничего знать не знают об уведомлениях и не должны.

  • @fila7yt
    @fila7yt 2 дні тому

    По моему этот паттерн имеет что то общее с рмк

  • @AbcDef-nv7qy
    @AbcDef-nv7qy 15 годин тому

    Спасибо!

  • @RelaxPseudo-Usefull
    @RelaxPseudo-Usefull День тому

    Спс за видос, норм обьяснил

  • @Сергей-у3к8й
    @Сергей-у3к8й 2 дні тому

    а не кажется что пример вредный? потому что а как обработать кейс когда после сохранения в базу вызов прерывается?

    • @fakng-engineer
      @fakng-engineer  2 дні тому

      Транзакцией ACID...

    • @Сергей-у3к8й
      @Сергей-у3к8й 2 дні тому

      @@fakng-engineer ну так у тебя сохранение в бд, потом вызов n действий не связанных с бд, что если на каком-то что-то пойдёт не так? т.е. в итоге данные не сохранятся, а какое-то количество чего-то куда-то улетит. я без претензий, просто они же копипастить будут и в итоге в тысячах контор будет гнкод.. а это издержки.

    • @sadstill
      @sadstill 2 дні тому

      @@Сергей-у3к8й так у тебя если на моменте сохранения в базу произошел ролбэк, то ты цепочку событий даже не запустишь

    • @hakooplayplay3212
      @hakooplayplay3212 День тому

      @@Сергей-у3к8й То есть ты хочешь сказать что ты хочешь откатить создание поста от того что у какому-то юзеру не прилетело уведомление? :)

  • @vilture5706
    @vilture5706 2 дні тому

    В QT на этом все построено и вшито прямо в фреймворк так, что писать без сигналов и слотов очень неловко.(Практически невозможно)

    • @heheheyhey5234
      @heheheyhey5234 12 годин тому

      это чуть другое

    • @vilture5706
      @vilture5706 6 годин тому

      @@heheheyhey5234 Почему это другое, если из за сигналов и слотов в QT паттерн наблюдателя совершенно не нужен.
      Тем что сигналы и слоты реализованы спец компилятором? Ну да, но это только упрощает код.

  • @VladimirGontarenko-be4df
    @VladimirGontarenko-be4df 2 дні тому

    Огонь

  • @Denisko123
    @Denisko123 2 дні тому

    Это ведь по сути полиморфизм (разные классы, но одно и то же название метода) ?

    • @fakng-engineer
      @fakng-engineer  2 дні тому

      Угу, все так

    • @MrRomanvideo
      @MrRomanvideo 2 дні тому

      Все паттерны построены на полиморфизме 😅, хотя нет, не все, но многие, поэтому полиморфизм это универсальная фича, а не конкретно го паттерна

    • @Denisko123
      @Denisko123 2 дні тому

      @@MrRomanvideo далеко не все. Тот же архитектурный паттерн mvc или front controller, где там полиморфизм. А вот взять ту же фабрику - чистый полиморфизм. ЗЫ А спросил, потому что на собесах тоже любят, про инкапсуляцию и наследование никогда не спрашивают, а вот про полиморфизм почти всегда )

    • @AndrewBP2k
      @AndrewBP2k День тому

      @@Denisko123, я спрашиваю. Еще спрашиваю знакомы ли фамилии "Кнут", "Вирт". Раньше спрашивал, читал ли кандидат труды этих граждан, но давно уже никто не отвечает утвердительно. Так что теперь вместо вопроса о чтении трудов спрашиваю о фамилиях.

  • @anatolygalay5910
    @anatolygalay5910 День тому

    Красава👍🏻

  • @fleshka48
    @fleshka48 2 дні тому

    А солид по существу может являться совокупностью паттернов проектирования?

  • @ugabuga-t7z
    @ugabuga-t7z 2 дні тому

    Это стратегия, а не наблюдатель

    • @fakng-engineer
      @fakng-engineer  2 дні тому

      Нет, они похожи просто, но ты немного путаешь тут

    • @abbze8272
      @abbze8272 День тому +1

      Это не стратегия, стратегия не отправляет эвенты и работает иначе, там даже суть другая, взаимозаменяемость классов-стратегий.

  • @ookhands3843
    @ookhands3843 2 дні тому

    Добрый день. А что если для новой фичи нужны новые данные в эвннте?

    • @stark1902
      @stark1902 2 дні тому

      Просто допишешь их в PostEvent

    • @fakng-engineer
      @fakng-engineer  2 дні тому

      Расширяем эвент

    • @MrRomanvideo
      @MrRomanvideo 2 дні тому

      ​@@fakng-engineer а в методе аксепт нельзя их достать?

    • @AndrewBP2k
      @AndrewBP2k День тому

      @@MrRomanvideo, странный вопрос. Эвент в методе accept как раз и разбирается на части. На те части, о которых метод accept знает. Ну а те, о которых не знает, те в данной конкретной фиче и не нужны.

  • @catcat2064
    @catcat2064 2 дні тому

    Что такое уведомления?

  • @Seraf_
    @Seraf_ День тому

    Я 1000 лайк 🎉😂