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

แชร์
ฝัง
  • เผยแพร่เมื่อ 22 ธ.ค. 2024

ความคิดเห็น • 248

  • @followthewhiterabbit982
    @followthewhiterabbit982 3 หลายเดือนก่อน +25

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

  • @stanislavkuprienko6475
    @stanislavkuprienko6475 3 หลายเดือนก่อน +20

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

  • @ozimandias1858
    @ozimandias1858 3 หลายเดือนก่อน +6

    Браво! Как у тебя не заканчиваются идеи для видео? Git, docker, kafka, микросервисы - все, на мой взгляд, очень понятно и не совсем для зеленых. Сейчас еще и паттерны подъехали. А самое клевое то, что почти все это не привязано к языку. Мне вот, как с++ разработчику, очень приятно. Спасибо!

    • @RaptorT1V
      @RaptorT1V 2 หลายเดือนก่อน

      А что ещё можно разобрать? Помимо всего вышеперечисленного?
      Что ещё существует такое, не привязанное к языку, но желательное к ознакомлению каждым программистом?

    • @ozimandias1858
      @ozimandias1858 2 หลายเดือนก่อน

      @@RaptorT1V agile, system design, алгоритмы и структуры данных, те же паттерны, гит, докер, но глубже. Так еще многопоточное программирование, grpc, rest, websocket. Это то, что за 2 минуты в голову пришло

    • @RaptorT1V
      @RaptorT1V 2 หลายเดือนก่อน

      @@ozimandias1858 а почему именно все про Agile говорят, а не про Waterfall или RAD или Incremental and Iterative model? Это же из области программной инженерии, я правильно понимаю? Методологии разработки.
      Что за структуры данных?
      Что за алгоритмы? Какие-то конкретные, типа Дейкстры или Хаффмана?
      Какие именно паттерны?
      Что за многопоточное программирование (асинхронное, что ли?) и GRPC, REST, Websocket?
      И можно, пожалуйста, ещё примеров? Себе хочу записать, чтобы изучить.

    • @ozimandias1858
      @ozimandias1858 2 หลายเดือนก่อน

      ​@@RaptorT1V если честно, звучит как троллинг ;-)
      Для меня agile, потому что большинство компаний по этой методологии работают. А вообще да, можно со многими ознакомиться, понять, в чем разница и т.п.
      Структуры данных, как и алгоритмы - все с литкода чисто для собеседований.
      Паттерны - стратегия, билдер, фабрика, абстрактный метод, например.
      Остальное гуглится.

  • @lelikpunk1
    @lelikpunk1 3 หลายเดือนก่อน +82

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

    • @nehz_ttv
      @nehz_ttv 3 หลายเดือนก่อน +1

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

    • @kvasela
      @kvasela 3 หลายเดือนก่อน +1

      Например GRASP, SOLID

    • @lelikpunk1
      @lelikpunk1 3 หลายเดือนก่อน +3

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

    • @iha206
      @iha206 3 หลายเดือนก่อน

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

    • @evan_kirk
      @evan_kirk 3 หลายเดือนก่อน +2

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

  • @ГеннадийШушпанов-д1ч
    @ГеннадийШушпанов-д1ч หลายเดือนก่อน +1

    Ложка дегтя :) При использовании паттерна наблюдатель помните, что вы лишь скрываете связи между объектами, а не устраняете их. То, что ранее присутствовало в коде, теперь должно хранится в вашей голове или, что нечасто, в документации.

  • @dimaskusidze
    @dimaskusidze 3 หลายเดือนก่อน +8

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

    • @gibbedhead
      @gibbedhead 3 หลายเดือนก่อน +4

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

    • @hakooplayplay3212
      @hakooplayplay3212 3 หลายเดือนก่อน

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

    • @Khodorisful
      @Khodorisful 3 หลายเดือนก่อน +2

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

    • @dimaskusidze
      @dimaskusidze 3 หลายเดือนก่อน

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

    • @serhiis_
      @serhiis_ 3 หลายเดือนก่อน

      @@dimaskusidze подключите rx и не мучайтесь и генерацией 100500 классов ради 2+2. В ООП самое плохое что может быть это наследование и создание классов ради создания классов. Этот код их 100 тыс классов ни кто не сможет ни читать и не понимать. В rx есть и observer и map и filter и управление потоками. Причем это все работает ОДИНАКОГО на всех языках. В том же rxjs все тоже самое. Обсервер создается знаком доллара и это очень легко писать и понимать БЕЗ единого класса

  • @Abobus-e5s
    @Abobus-e5s 2 หลายเดือนก่อน +8

    я почему-то сначала думал, что он говорит про синглтон, я думал, что именно он самый популярный паттерн

    • @P7Vagrant
      @P7Vagrant 2 หลายเดือนก่อน +7

      Чаще всего это самый популярный антипаттерн)

    • @ПавелФомин-ъ4с
      @ПавелФомин-ъ4с หลายเดือนก่อน

      самый нерекомендуемый))

    • @boost_456
      @boost_456 หลายเดือนก่อน

      Да, самый полуполярный среди тех, кто второй раз слышит слово "паттерн"

  • @zzzahon8519
    @zzzahon8519 หลายเดือนก่อน +1

    паттерн классный, но лучше уже сразу рассказать про архитетурное решение EDA - event driven development, но уже есть видео про кафку, где это подробро рассказано. Кстати eda и в монолите работает отлично.

  • @hurricane-rus
    @hurricane-rus 3 หลายเดือนก่อน +8

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

    • @alexgavril385
      @alexgavril385 3 หลายเดือนก่อน

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

    • @root-developer
      @root-developer 3 หลายเดือนก่อน

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

    • @donlinoleum831
      @donlinoleum831 3 หลายเดือนก่อน

      @@alexgavril385 можно

  • @АртёмМеркулов-ю3к
    @АртёмМеркулов-ю3к หลายเดือนก่อน

    Спасибо за видео. Хотя с первого раза не совсем понял. Но у меня и с ООП не оч хорошо, т.к. пока не требуется нигде - всё на процедурном...

  • @michelleasrolabus1533
    @michelleasrolabus1533 3 หลายเดือนก่อน

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

  • @coox4546
    @coox4546 หลายเดือนก่อน

    Второй вариант паблишить через ивенты спринга и вешать листенеры в каждой новой фиче. Но этот вариант более понятен для восприятия

  • @WadeChannal
    @WadeChannal 2 หลายเดือนก่อน

    Красава, Влад, я сразу очень уместно применил его на своем проекте. Был сервис, который при создании сущности делал 3 доп. действия. Прошу продолжать рассказывать нам про подобные фишки

  • @AkhmerovRustem
    @AkhmerovRustem หลายเดือนก่อน

    Супер! 70% ролика - объясняет саму суть для опытного флаттерфовщика!

  • @andystravelsrus1139
    @andystravelsrus1139 2 หลายเดือนก่อน

    Бомба! Реально увлекательно! Спасибо за видос!

  • @edv_ccode
    @edv_ccode หลายเดือนก่อน

    В начале (5:20) вы указали, что выполняемые действия могут зависеть друг от друга. Но до конца видео так и не указали на решение этой проблемы. Как раз наоборот - Наблюдатели ничего не знают (не должны знать) о других наблюдателях, ровно как и порядок "наблюдения" никак не регламентируется.
    Также в видео не указано, как организовать "подписку" на событие. Вы утверждаете, что мы исходный класс не правим. Но это не совсем верно - мы же должны добавить нового Наблюдателя в нашу коллекцию наблюдателей.

    • @АлексейСытник-э9т
      @АлексейСытник-э9т หลายเดือนก่อน

      Если работать через авинжект спринга например, то это произойдёт автоматически

    • @edv_ccode
      @edv_ccode หลายเดือนก่อน

      @АлексейСытник-э9т если что-то происходит автоматически - это все равно происходит. Я к тому, что изменение в исходный класс (регистратор) все равно нужно вносить. Не важно, вручную или автоматически

  • @MRFox-c8x
    @MRFox-c8x 2 หลายเดือนก่อน

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

  • @volodymyr_76
    @volodymyr_76 2 หลายเดือนก่อน +1

    Не хватило только о том как эти обсерверы перечислять и передавать в класс. А так все классно и наглядно рассказано 👍

  • @evgeniyzhukov502
    @evgeniyzhukov502 2 หลายเดือนก่อน

    Привет. Спасибо за информацию. Но думаю, что у тебя неточность в схеме про публикатор. Он же записывает информацию в БД, а не отправляет ее напрямую слушателям, слушатели подписываются на события, т.е. делают запросы к базе. Это так?

  • @programmer-inwall
    @programmer-inwall 3 หลายเดือนก่อน

    Спасибо за видео, Влад!
    Как обычно с радостью посмотрел.
    Если я правильно понимаю, следуя принципам solid, ты как раз будешь придерживаться паттерна наблюдатель?

  • @osoboechuvstvo
    @osoboechuvstvo 2 หลายเดือนก่อน

    Почему вы указали на 5:54 минуте последовательность: Событие + Публикатор + Наблюдатель ?
    Это ошибка или я что-то упустила?

  • @PaulDeVille
    @PaulDeVille 3 หลายเดือนก่อน

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

  • @andrzejsotnikow7494
    @andrzejsotnikow7494 หลายเดือนก่อน

    ваще, крутой видос

  • @user-aytan
    @user-aytan 2 หลายเดือนก่อน

    Zdravstvuyte. Skolko stoit kurs Spring ?

    • @fakng-engineer
      @fakng-engineer  2 หลายเดือนก่อน

      Привет, отдельного курса по Spring у нас нет, работа с этим фреймворком является частью программы интенсивного обучения - Java Буткемпа, где за 4 месяца ты изучаешь все ключевые инструменты и технологии, которые необходимы разработчику, чтобы получить работу!
      А также 3 октября в 19:00 по мск состоится вебинар - лекция “Основы Spring для начинающих Java Junior”, где разберем основы его работы, заходи по ссылке в шапке профиля!

  • @БогданДаной-к1р
    @БогданДаной-к1р 3 หลายเดือนก่อน

    Влад, спасибо огромное тебе за твой труд!
    Хотелось бы узнать, как и можно ли вообще устроиться на работу программистом в Европу если не было карьерного опыта?
    Буду благодарен за ответ

  • @Stalker-b7m
    @Stalker-b7m 2 หลายเดือนก่อน

    Добрый день, меня интересует один вопрос на каком устройстве или операционной системе проще работать, виндовс или иос макбук или какой-нибудь Леонова йога 9 вопрос не в деньгах, а в удобстве может совместимости программ, хочется начать заниматься программированием?

    • @b33blebrox
      @b33blebrox 2 หลายเดือนก่อน

      Смотря на чем программировать. Если нет прямой необходимости в винде (как в .net и т.п.), то ни в коем случае ее не использовать. Макбук хорош (качество железа на высоте, все эргономично и удобно), на линухе во всех остальных случаях

    • @quadroninja2708
      @quadroninja2708 2 หลายเดือนก่อน

      ​@@b33blebroxа чем винда плоха?

  • @wil9921
    @wil9921 3 หลายเดือนก่อน +3

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

    • @letsplay6051
      @letsplay6051 3 หลายเดือนก่อน

      Если речь о Spring, то есть такое понятие как "Внедрение зависимостей". Spring сам создаст список всех наблюдателей.

    • @naximchik
      @naximchik หลายเดือนก่อน

      ага, этот момент не расскрыт

  • @slevin31231
    @slevin31231 3 หลายเดือนก่อน

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

  • @ДмитрийКарпич
    @ДмитрийКарпич 2 หลายเดือนก่อน +1

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

  • @BoyarinLex
    @BoyarinLex 3 หลายเดือนก่อน

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

  • @kind1y
    @kind1y 2 หลายเดือนก่อน

    Нужно бооольше таких разборов разных паттернов))

  • @tatianaf3857
    @tatianaf3857 หลายเดือนก่อน +1

    Если не сложно, хорошо бы еще сразу давать English-вариант всех названий ( а то иногда сомневаешься в переводе- то ли имелся в виду observer, то ли listener ).

  • @dryadliker
    @dryadliker 3 หลายเดือนก่อน

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

  • @coscosru
    @coscosru หลายเดือนก่อน

    Классно!

  • @Alex-ry7ur
    @Alex-ry7ur 2 หลายเดือนก่อน

    Влад, привет! Лекцию можно будет посмотреть в записи? Только сегодня увидел твоё видео, а лекция была вчера 😢

    • @fakng-engineer
      @fakng-engineer  2 หลายเดือนก่อน

      Привет, 3 октября проводим повтор, залетай по ссылке в описании, успеешь!

    • @Alex-ry7ur
      @Alex-ry7ur 2 หลายเดือนก่อน

      @@fakng-engineer отлично, спасибо!

  • @ВВВППП-в6г
    @ВВВППП-в6г 3 หลายเดือนก่อน

    Непонятно для других языков. Будет ли считаться "наблюдателем" если класс или микросервис создает посты, другой микросервис или класс мониторит появление новых постов в БД и шлет уведомления и т.д.?

  • @АндрейХалин-н7ъ
    @АндрейХалин-н7ъ 3 หลายเดือนก่อน +2

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

  • @DeadRabbitCanDance
    @DeadRabbitCanDance 3 หลายเดือนก่อน

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

    • @fakng-engineer
      @fakng-engineer  3 หลายเดือนก่อน

      Зарегистрироваться получится, в телеграме общение и всякие приятные бонусы, но все необходимые ссылки дублируются на почту

  • @ТестировщикНиконов
    @ТестировщикНиконов 3 หลายเดือนก่อน

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

  • @Stalker-b7m
    @Stalker-b7m 2 หลายเดือนก่อน

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

    • @АнжелаКаратаева-з9ь
      @АнжелаКаратаева-з9ь 2 หลายเดือนก่อน +2

      Skillfactory отличная школа для изучения базы в программировании, я училась на графического дизайнера с нуля, до этого была экономистом и работаю по новой специальности, хочу пойти на бэкендера опять же в скиллфэктори тк опыт работы с ребятами разработчиками во время обучения мне был комфортен

    • @Sashka_Luc1fer
      @Sashka_Luc1fer 2 หลายเดือนก่อน +2

      Могу тоже сказать про sf, потому что они очень хорошие дают материал, и даже если нет никакого опыта помогут, объяснят и направят в нужном направлении изучения и закрепления материала))

    • @Stalker-b7m
      @Stalker-b7m 2 หลายเดือนก่อน

      Добрый день, меня интересует один вопрос на каком устройстве или операционной системе проще работать, виндовс или иос макбук или какой-нибудь Леонова йога 9 вопрос не в деньгах, а в удобстве может совместимости программ, хочется начать заниматься программированием?

    • @Sashka_Luc1fer
      @Sashka_Luc1fer 2 หลายเดือนก่อน +1

      @@Stalker-b7m главное не macos, Линукс лучше всего, а если с ним не дружите, лучше винда на неё много что можно поставить, на крайняк можно через виртуалку запустить Линукс для единичных случаев

  • @oraxis7372
    @oraxis7372 3 หลายเดือนก่อน

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

  • @fakng-engineer
    @fakng-engineer  3 หลายเดือนก่อน

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

  • @Mr43046721
    @Mr43046721 3 หลายเดือนก่อน

    События играют мегаклассно в Event driven архитектуре) там ты паблишера и консумеров можешь разносить аж в разные микросервисы)
    Событие кладется в брокера сообщений, и далее его получают все, кто подписан на данное событие. ВААААУУУУУ

  • @Inos25
    @Inos25 3 หลายเดือนก่อน

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

  • @ОльгаЛукина-о9в
    @ОльгаЛукина-о9в 3 หลายเดือนก่อน

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

  • @trimaid9871
    @trimaid9871 3 หลายเดือนก่อน +1

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

    • @MrRomanvideo
      @MrRomanvideo 3 หลายเดือนก่อน +2

      Одно и тоже

    • @gibbedhead
      @gibbedhead 3 หลายเดือนก่อน +2

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

    • @hakooplayplay3212
      @hakooplayplay3212 3 หลายเดือนก่อน

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

    • @BurmAlex
      @BurmAlex 3 หลายเดือนก่อน

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

  • @ivt6325
    @ivt6325 2 หลายเดือนก่อน

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

  • @MRshtoraThe
    @MRshtoraThe 2 หลายเดือนก่อน

    Классно было бы еще рассказать об системном и бизнес аналике,их работу,основы,принципы,от лица бэкэнд разраба

    • @ololo2755
      @ololo2755 23 วันที่ผ่านมา

      у нас на работе аналитики это кривые дауны, которые нихрена не в чем не шарят, убери их и почти ничего не изменится, это банк если что

  • @TheDustyChannel3334
    @TheDustyChannel3334 3 หลายเดือนก่อน +1

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

    • @fakng-engineer
      @fakng-engineer  3 หลายเดือนก่อน +1

      Попробуй включить впн, или отключить ADblock в браузере, должно помочь

  • @albanec4702
    @albanec4702 3 หลายเดือนก่อน

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

  • @arthur.v.babayan
    @arthur.v.babayan 3 หลายเดือนก่อน

    А вообще, можно создать такой класс наблюдатель, который имеет метод запуска, который на вход получает, не только объект события, но тип события.
    И после этого можно вообще в основной клас не заходить, а просто добавлять модули :)
    Прилижение с подгружаемыми модулями :)

    • @PavelNebo
      @PavelNebo 3 หลายเดือนก่อน +1

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

    • @TimLaizaR228
      @TimLaizaR228 3 หลายเดือนก่อน

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

    • @PavelNebo
      @PavelNebo 3 หลายเดือนก่อน

      @@TimLaizaR228 ну я это и описал. Отдельный клас который занимается распределением событий по нужным получателям, а продюсер отправляет одно событие в этот класс

    • @naximchik
      @naximchik หลายเดือนก่อน

      @@PavelNebo вы придумали кафку и систему очередей в целом))

  • @-SRE
    @-SRE 2 หลายเดือนก่อน

    Подача отличная. Если бы смотрел такое впервые, то зашло бы.

  • @androidpasha
    @androidpasha หลายเดือนก่อน

    Теперь понял почему старое железо тормозит. Из за сотен наблюдателей.

  • @snatvb
    @snatvb 2 หลายเดือนก่อน

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

    • @apostol_fet
      @apostol_fet 2 หลายเดือนก่อน

      По GOF, subject хранит в себе наблюдателей и уведомляет их при наступлении события (метода Notify) с передачей этого события, также в самом наблюдателе может хранится ссылка на наблюдаемый объект (subject), чтобы тот при уведомлении сам мог запрашивать необходимую информацию. Посмотрите книжку там все понятно описано

  • @ВасилийГоловко-д9и
    @ВасилийГоловко-д9и 3 หลายเดือนก่อน

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

  • @PBmAsTeP
    @PBmAsTeP หลายเดือนก่อน

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

  • @EgorFrade
    @EgorFrade 3 หลายเดือนก่อน

    топ видео! а как ты делаешь такие крутые анимации ?

  • @dfbdtrhgwtwd7149
    @dfbdtrhgwtwd7149 3 หลายเดือนก่อน

    "Отдельными компонентами программы являются классы и объекты"? Vlad, ты уверен что хорошо сформулировал свою мысль? Класс - это design-time (если речь не идет про static class - там есть ньюансы), а объект - это run-time.

  • @БАХА-в1о
    @БАХА-в1о 2 หลายเดือนก่อน

    Слушай друг, откуда у тебя столько времени на все это ?

  • @Grigoren_com
    @Grigoren_com 3 หลายเดือนก่อน

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

  • @uzurbatya
    @uzurbatya 3 หลายเดือนก่อน

    Мишустин Влад, ты молодец, отлично сделал

  • @ruslanm.1120
    @ruslanm.1120 3 หลายเดือนก่อน

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

  • @СашаИванов-д8щ2ь
    @СашаИванов-д8щ2ь 3 หลายเดือนก่อน

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

  • @prosvet7731
    @prosvet7731 3 หลายเดือนก่อน

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

  • @weekendshow7567
    @weekendshow7567 3 หลายเดือนก่อน

    Патерны-матерны это хорошо.
    Но было бы в 💯 раз полезно, если бы вы сделали хотя бы 5 приложений с объяснением🎉
    А то на одной "воде" далеко не уедешь ❤

  • @Nisitka
    @Nisitka 3 หลายเดือนก่อน

    Я знаю где не спросят о нем - на разработчика с использованием библиотеки Qt, ведь она основывается на нем

  • @Khodorisful
    @Khodorisful 3 หลายเดือนก่อน

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

    • @testdeim
      @testdeim 3 หลายเดือนก่อน +2

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

    • @testdeim
      @testdeim 3 หลายเดือนก่อน

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

    • @Khodorisful
      @Khodorisful 3 หลายเดือนก่อน

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

    • @testdeim
      @testdeim 3 หลายเดือนก่อน

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

  • @tregubov
    @tregubov 3 หลายเดือนก่อน

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

  • @victoriahitro3203
    @victoriahitro3203 2 หลายเดือนก่อน

    Классное видео, спасибо

  • @nnz13
    @nnz13 3 หลายเดือนก่อน +2

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

    • @hakooplayplay3212
      @hakooplayplay3212 3 หลายเดือนก่อน

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

  • @Сергей-у3к8й
    @Сергей-у3к8й 3 หลายเดือนก่อน

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

    • @fakng-engineer
      @fakng-engineer  3 หลายเดือนก่อน

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

    • @Сергей-у3к8й
      @Сергей-у3к8й 3 หลายเดือนก่อน

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

    • @sadstill
      @sadstill 3 หลายเดือนก่อน

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

    • @hakooplayplay3212
      @hakooplayplay3212 3 หลายเดือนก่อน

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

    • @getridofer
      @getridofer 2 หลายเดือนก่อน

      @@Сергей-у3к8й в этом случае поможет другой паттерн, называется transactional outbox)

  • @uladzimirdrazdou1563
    @uladzimirdrazdou1563 3 หลายเดือนก่อน

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

  • @Monax-go6vq
    @Monax-go6vq 3 หลายเดือนก่อน

    Я думал, что чамый популярный паттерн - это MVC, да так оно и есть

    • @lev431
      @lev431 3 หลายเดือนก่อน

      Это база везде

  • @andrew-ld1jg
    @andrew-ld1jg 3 หลายเดือนก่อน +1

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

  • @ЮрийДымов-у6щ
    @ЮрийДымов-у6щ 3 หลายเดือนก่อน +5

    Сингальтон

  • @FightRebelAndRiot
    @FightRebelAndRiot 2 หลายเดือนก่อน +6

    Я конечно не 7, а всего лишь 6 лет в индустрии. Но меня ни разу ни на одном собеседовании не спрашивали про этот паттерн. Хотя собеседуюсь довольно часто.
    Пару раз было такое, что меня спрашивали о том, какие паттерны я знаю и просили рассказать про парочку. Обычно первыми на ум приходили: стратегия, фабрика, синглтон.

  • @mihhha8552
    @mihhha8552 2 หลายเดือนก่อน

    Привет, запиши пожалуйста видео как работать с очередями

  • @megaboy2k
    @megaboy2k หลายเดือนก่อน

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

  • @ookhands3843
    @ookhands3843 3 หลายเดือนก่อน

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

    • @stark1902
      @stark1902 3 หลายเดือนก่อน

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

    • @fakng-engineer
      @fakng-engineer  3 หลายเดือนก่อน

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

    • @MrRomanvideo
      @MrRomanvideo 3 หลายเดือนก่อน

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

    • @AndrewBP2k
      @AndrewBP2k 3 หลายเดือนก่อน

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

  • @РомаНенавижугуглплюс
    @РомаНенавижугуглплюс 2 หลายเดือนก่อน +1

    Странный паттерн наблюдатель, по факту он не наблюдает, а его пинают. А весь толк даёт наследование с полиморфизмом.

  • @maroo2014
    @maroo2014 หลายเดือนก่อน

    Сохранение в базу данных лучше сделать в виде наблюдателя, а не хардкодить в методе создания ивента.

  • @КириллИгоревич-к1ф
    @КириллИгоревич-к1ф 2 หลายเดือนก่อน

    Аж кайфанул от подачи...) -> List(Действие). Лайк extends Действие. Подписка extends Действие. Уведомления extends Действие. =)))

  • @viktor.florinskiy
    @viktor.florinskiy 3 หลายเดือนก่อน +2

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

  • @Fjaieb
    @Fjaieb 3 หลายเดือนก่อน

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

    • @Khodorisful
      @Khodorisful 3 หลายเดือนก่อน +1

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

  • @dfbdtrhgwtwd7149
    @dfbdtrhgwtwd7149 3 หลายเดือนก่อน +1

    Этот ролик наглядно демонстрирует отсталость Java от C#. В С# весь этот "паттерн" реализован на уровне самого языка (Events) и доступен разработчикам в готовом виде (да еще и с кучей дополнительных фишек) сразу "из коробки". В Java же нужно писать все самому ручками, со всеми погрешностями и дальнейшей дополнительной поддержкой.

    • @userxh-sg6cg
      @userxh-sg6cg 2 หลายเดือนก่อน

      С# сейчас часто применяется в проектах?

    • @dfbdtrhgwtwd7149
      @dfbdtrhgwtwd7149 2 หลายเดือนก่อน

      @@userxh-sg6cg Смотря в каких проектах. В крупных компаниях для реализации больших сложных проектах - часто!

  • @decimaldelimiter587
    @decimaldelimiter587 3 หลายเดือนก่อน +1

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

    • @hakooplayplay3212
      @hakooplayplay3212 3 หลายเดือนก่อน

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

    • @decimaldelimiter587
      @decimaldelimiter587 3 หลายเดือนก่อน

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

    • @serhiis_
      @serhiis_ 3 หลายเดือนก่อน

      @@decimaldelimiter587 вообще синглтон это АНТИпаттерн

  • @vitaliykolomiets6609
    @vitaliykolomiets6609 3 หลายเดือนก่อน

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

  • @enterprise7585
    @enterprise7585 3 หลายเดือนก่อน

    Сохранять пост стоило бы тоже по евенту, и выдавать другое событие

  • @sodz5144
    @sodz5144 หลายเดือนก่อน

    12:40 Это называется Несвязность

  • @aleks_versus
    @aleks_versus 3 หลายเดือนก่อน

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

  • @mirrorcoder1992
    @mirrorcoder1992 3 หลายเดือนก่อน

    Я прошел только за год 10 собеседований и ни на одном не спросили про паттерн этот. Звучит очень клик-бейтно и плюс еще не очень удачный пример и не совсем правильное и очевидное приминение этого паттерна и особенно в заданном контексте сиутации. Очень рад, что умеете снимать контент и продвигать его, но пригласите, пожалуйста экспертов еще для проверки сценариев. Потому что подача красивая и быстрая, но суть некачественная. А ведь было бы полезно иногда обновлять свои знания какие-то таким образом.

  • @ebelmania2550
    @ebelmania2550 2 หลายเดือนก่อน

    У меня вопрос, разве этот паттерн в таком исполнении, не нарушает принцип подстановки Лисков?

    • @VoiceStudioTube
      @VoiceStudioTube 2 หลายเดือนก่อน

      А в чем проблема? В каком месте у вас сомнения?

  • @AbcDef-nv7qy
    @AbcDef-nv7qy 3 หลายเดือนก่อน

    Спасибо!

  • @VoiceStudioTube
    @VoiceStudioTube 2 หลายเดือนก่อน

    В конце видео гоготнул со слова лаконичный)

  • @mikhailsloushch5052
    @mikhailsloushch5052 3 หลายเดือนก่อน

    Самый главный паттерн - это абстрактный метод

  • @dimalegendarypro
    @dimalegendarypro หลายเดือนก่อน

    Нет чувак!Самый популярный паттерн стратегия.

  • @igorseledtsov7345
    @igorseledtsov7345 3 หลายเดือนก่อน

    так и не сказано, что же это за зверь паттерн программмирования

  • @AndreyJDev
    @AndreyJDev 3 หลายเดือนก่อน +7

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

    • @MrRomanvideo
      @MrRomanvideo 3 หลายเดือนก่อน +2

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

    • @koller18
      @koller18 3 หลายเดือนก่อน +1

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

    • @BurmAlex
      @BurmAlex 3 หลายเดือนก่อน

      Dependency Injection/Inversion?

    • @iosswiftuipractice3793
      @iosswiftuipractice3793 3 หลายเดือนก่อน

      Этим солидам никто уже не следует в России, говнокодеров много. Главное чтобы работало. А те кто спрашивают это на сабесе просто пытаются найти лоха который будет работать за них и кому можно платить в 3 раза меньше. То же касается с тест заданием и лайфкодингом. Мне насрать что чел знает, главное чтобы он сделал то что ему говорят сделать. Пока hr годами ищут и смотрят на текучку, другие тупо берут и дообувают типа. Еще валите оттуда где там вам говорят что будет 2-3 или более сабесов, сразу нахер

  • @Vivavatnik
    @Vivavatnik 2 หลายเดือนก่อน

    Влад, а на Рутуб не будешь выкладывать?

  • @JimmyBaevsky
    @JimmyBaevsky 2 หลายเดือนก่อน

    Какие "собесы"?! Пришел программист. В каких проектах вы принимали участие, в каких фирмах? Запрограммируйте вот эту задачу за 15 минут. Кто будет экзаменовать программиста по знанию языка программирования? Только с дуба рухнувший!😂 А если экзаменуют, бежать из такого дурдома без оглядки.😅

    • @ГеннадийШушпанов-д1ч
      @ГеннадийШушпанов-д1ч หลายเดือนก่อน

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

    • @JimmyBaevsky
      @JimmyBaevsky หลายเดือนก่อน

      @ГеннадийШушпанов-д1ч Возможно. Однако пресловутые тесты IQ не случайно имеют ограничение по времени выполнения. Решение задач за деньги должно быть производительным. )) В программировании, которое теперь предпочитают называть "написанием кода", подчеркивая этим банальность этого занятия и отсутствие в нем таорческого начала, приобретает едва ли не главенствующее значение производительность. Прошли времена "суперпрограммистов", серенький руководитель предпочитает иметь дело с программистами того же оттенка, главное, чтобы они работали вместе и укладывались в поставленные им сроки. Есть мнение, что с появлением ИИ этот процесс станет еше более рутинным. Много также говорится об индийских программистах, которые пишут удивительно быстро. По этому скорость "кодирования" сейчас становится для работодателя важным показателем профессионализма програмииста. И тест на время, при всей его пошлости, имеет определенный смысл.