БЕСПЛАТНЫЙ ВЕБ “Основы Spring для начинающих Java Junior” 24.09.24 в 19:00 по МСК! Регистрируйтесь по ссылке: www.faang.school/vebinar-spring?
@followthewhiterabbit9824 ай бұрын
Отлично! Давай продолжать разбирать паттерны в таком же формате!
@АртемМихневич-н7б21 күн бұрын
Тема паттернов сложна для многих , по причине того, что в книгах используется псевдокод , и примеры из 90х годов . Не хватает их правильно адаптировать под современные реальности , и показать примеры как на видео, тем более многие фреймворки уже многие паттерны содержат внутри себя
@ГеннадийШушпанов-д1ч3 ай бұрын
Ложка дегтя :) При использовании паттерна наблюдатель помните, что вы лишь скрываете связи между объектами, а не устраняете их. То, что ранее присутствовало в коде, теперь должно хранится в вашей голове или, что нечасто, в документации.
@stanislavkuprienko64754 ай бұрын
Круто 👍 Спасибо тебе, Влад, за контент. И всё таки, выпуск про Redis ждём)
@ozimandias18584 ай бұрын
Браво! Как у тебя не заканчиваются идеи для видео? Git, docker, kafka, микросервисы - все, на мой взгляд, очень понятно и не совсем для зеленых. Сейчас еще и паттерны подъехали. А самое клевое то, что почти все это не привязано к языку. Мне вот, как с++ разработчику, очень приятно. Спасибо!
@RaptorT1V4 ай бұрын
А что ещё можно разобрать? Помимо всего вышеперечисленного? Что ещё существует такое, не привязанное к языку, но желательное к ознакомлению каждым программистом?
@ozimandias18584 ай бұрын
@@RaptorT1V agile, system design, алгоритмы и структуры данных, те же паттерны, гит, докер, но глубже. Так еще многопоточное программирование, grpc, rest, websocket. Это то, что за 2 минуты в голову пришло
@RaptorT1V4 ай бұрын
@@ozimandias1858 а почему именно все про Agile говорят, а не про Waterfall или RAD или Incremental and Iterative model? Это же из области программной инженерии, я правильно понимаю? Методологии разработки. Что за структуры данных? Что за алгоритмы? Какие-то конкретные, типа Дейкстры или Хаффмана? Какие именно паттерны? Что за многопоточное программирование (асинхронное, что ли?) и GRPC, REST, Websocket? И можно, пожалуйста, ещё примеров? Себе хочу записать, чтобы изучить.
@ozimandias18584 ай бұрын
@@RaptorT1V если честно, звучит как троллинг ;-) Для меня agile, потому что большинство компаний по этой методологии работают. А вообще да, можно со многими ознакомиться, понять, в чем разница и т.п. Структуры данных, как и алгоритмы - все с литкода чисто для собеседований. Паттерны - стратегия, билдер, фабрика, абстрактный метод, например. Остальное гуглится.
@zzzahon85193 ай бұрын
паттерн классный, но лучше уже сразу рассказать про архитетурное решение EDA - event driven development, но уже есть видео про кафку, где это подробро рассказано. Кстати eda и в монолите работает отлично.
@volodymyr_764 ай бұрын
Не хватило только о том как эти обсерверы перечислять и передавать в класс. А так все классно и наглядно рассказано 👍
@michelleasrolabus15334 ай бұрын
Супер объяснение! И графика оболденная!!! Спасибо за видео большое! Жду других патернов!!! Можно было бы целый плей лист! Еще раз спасибо!
@hurricane-rus4 ай бұрын
Я наконец понял, как называлось то, что часто применял в своих проектах, но не знал, что у этого есть отдельное название)
@alexgavril3854 ай бұрын
Можно где то ваши проекты скачать или посмотреть в интернете?😂
@root-developer4 ай бұрын
@@alexgavril385 ты что это секретные пет проекты под NDA
@donlinoleum8314 ай бұрын
@@alexgavril385 можно
@lelikpunk14 ай бұрын
А будут видео именно про объяснение разных паттернов? Было бы круто))
@nehz_ttv4 ай бұрын
Я тоже хочу больше такого контента!
@kvasela4 ай бұрын
Например GRASP, SOLID
@lelikpunk14 ай бұрын
Я об порождающих, структурных и поведенческих)
@iha2064 ай бұрын
@@kvaselaпро solid есть видео. Всё четко на примерах разобрано.
@evan_kirk4 ай бұрын
@@kvasela SOLID это принципы, а не паттерны.
@dryadliker4 ай бұрын
Отличное видео! Всё понятно. Поймал себя на мысли, что никогда так захватывающе не смог бы объяснять паттерны программирования😁
@WadeChannal4 ай бұрын
Красава, Влад, я сразу очень уместно применил его на своем проекте. Был сервис, который при создании сущности делал 3 доп. действия. Прошу продолжать рассказывать нам про подобные фишки
@andystravelsrus11394 ай бұрын
Бомба! Реально увлекательно! Спасибо за видос!
@ДмитрийКарпич4 ай бұрын
Так то да, классно! Вот только проблема есть, если у нас шина для сообщений нормально не сделана, то сиди и пытайся понять - кому что улетело и почему там что-то выстрелило. Сложность нельзя просто замести под коврик, ее можно перенести в другое место, но это, скорее всего, вызовет накладные расходы. Так что в реальной реальности все немного сложнее.
@BoyarinLex4 ай бұрын
Огонь! Очень полезное и понятное видео, спасибо!
@PaulDeVille4 ай бұрын
Очень доступным языком объяснил. Круто!🔥
@Abobus-e5s4 ай бұрын
я почему-то сначала думал, что он говорит про синглтон, я думал, что именно он самый популярный паттерн
@P7Vagrant3 ай бұрын
Чаще всего это самый популярный антипаттерн)
@ПавелФомин-ъ4с3 ай бұрын
самый нерекомендуемый))
@boost_4563 ай бұрын
Да, самый полуполярный среди тех, кто второй раз слышит слово "паттерн"
@kind1y4 ай бұрын
Нужно бооольше таких разборов разных паттернов))
@slevin312314 ай бұрын
Понравилось! Рассказывай еще про паттерны)
@АндрейХалин-н7ъ4 ай бұрын
Спасибо , интересный урок . Возможно ты сделаешь еще видео про другие паттерны
@AkhmerovRustem3 ай бұрын
Супер! 70% ролика - объясняет саму суть для опытного флаттерфовщика!
@oraxis73724 ай бұрын
Объяснение и анимации топ. Очень хочется видео и про другие паттерны)
@andrzejsotnikow74943 ай бұрын
ваще, крутой видос
@coox45463 ай бұрын
Второй вариант паблишить через ивенты спринга и вешать листенеры в каждой новой фиче. Но этот вариант более понятен для восприятия
@ОльгаЛукина-о9в4 ай бұрын
супер объяснение! запишите еще такие же видео про другие паттерны, пожалуйста
@coscosru3 ай бұрын
Классно!
@ТестировщикНиконов4 ай бұрын
Влад, спасибо! Хорошее объяснение. Даже я понял:)
@androidpasha3 ай бұрын
Теперь понял почему старое железо тормозит. Из за сотен наблюдателей.
@MRFox-c8x4 ай бұрын
Не знаю говорил ли ты или нет, но можешь рассказать про свои первые задачи на первой работе, или может расскажешь какие задачи дают совсем новичкам (не стажерам, а работягам) в вашей конторе.
@АртёмМеркулов-ю3к3 ай бұрын
Спасибо за видео. Хотя с первого раза не совсем понял. Но у меня и с ООП не оч хорошо, т.к. пока не требуется нигде - всё на процедурном...
@programmer-inwall4 ай бұрын
Спасибо за видео, Влад! Как обычно с радостью посмотрел. Если я правильно понимаю, следуя принципам solid, ты как раз будешь придерживаться паттерна наблюдатель?
@albanec47024 ай бұрын
прекрасный ролик - ставлю класс!)
@with-nikita4 ай бұрын
Круто. На самом деле прикольно будет узнать это на практисе. Жаль что я не Java, но и на шарпе интересно)
@MrRomanvideo4 ай бұрын
Одно и тоже
@gibbedhead4 ай бұрын
Уж шарпист-то java, и наоборот, может читать как никто другой.
@hakooplayplay32124 ай бұрын
Я чуть чаем не подавился когда в конце таки сказал что ты шарпист :D ахах, тролль 80го уровня
@BurmAlex4 ай бұрын
суть паттернов и причины применений везде одинаковые, будь то шапы, джава, пыха, питон...
@tatianaf38573 ай бұрын
Если не сложно, хорошо бы еще сразу давать English-вариант всех названий ( а то иногда сомневаешься в переводе- то ли имелся в виду observer, то ли listener ).
@Mr430467214 ай бұрын
События играют мегаклассно в Event driven архитектуре) там ты паблишера и консумеров можешь разносить аж в разные микросервисы) Событие кладется в брокера сообщений, и далее его получают все, кто подписан на данное событие. ВААААУУУУУ
@Inos254 ай бұрын
Влад, спасибо за объяснение! Ты крутой 🔥
@dimaskusidze4 ай бұрын
Подскажите пожалуйста , а как наблюдатели дружно запрыгивают в list класса PostSaver?? Им же надо там откуда-то взяться ...
@gibbedhead4 ай бұрын
Я совсем не спец, но тоже подумал что зря он не объяснил этот момент. По логике, наблюдатель должен подписаться на события, т.е. в публикаторе нужен метод, который добавит наблюдателя в лист.
@hakooplayplay32124 ай бұрын
либо при инициализации приложения всех обсерверов цепляешь, либо можно это динамически через метод класса добавлять-убирать
@Khodorisful4 ай бұрын
DI контейнер. Реализация паттерна Inversion of control
@dimaskusidze4 ай бұрын
@@KhodorisfulТ.е. все наблюдатели у нас бины и они при инициализации листа прыгают в лист ?? Ну тогда это надо в конструкторе класса конкретно прописать каждое добавление экземплярами класса?? Да ещё и тип загрузки прописать как @lazy у каждого компонента ?? А то машина насоздает бинов и запутается в них (((
@serhiis_4 ай бұрын
@@dimaskusidze подключите rx и не мучайтесь и генерацией 100500 классов ради 2+2. В ООП самое плохое что может быть это наследование и создание классов ради создания классов. Этот код их 100 тыс классов ни кто не сможет ни читать и не понимать. В rx есть и observer и map и filter и управление потоками. Причем это все работает ОДИНАКОГО на всех языках. В том же rxjs все тоже самое. Обсервер создается знаком доллара и это очень легко писать и понимать БЕЗ единого класса
@-SRE3 ай бұрын
Подача отличная. Если бы смотрел такое впервые, то зашло бы.
@MRshtoraThe4 ай бұрын
Классно было бы еще рассказать об системном и бизнес аналике,их работу,основы,принципы,от лица бэкэнд разраба
@ololo27552 ай бұрын
у нас на работе аналитики это кривые дауны, которые нихрена не в чем не шарят, убери их и почти ничего не изменится, это банк если что
@evgeniyzhukov5024 ай бұрын
Привет. Спасибо за информацию. Но думаю, что у тебя неточность в схеме про публикатор. Он же записывает информацию в БД, а не отправляет ее напрямую слушателям, слушатели подписываются на события, т.е. делают запросы к базе. Это так?
@ivt63254 ай бұрын
Годнота, практически никогда не ставлю лайк и не подписуюсь, а тут парень просто заслужил! Уважение и благодарность!
@БогданДаной-к1р4 ай бұрын
Влад, спасибо огромное тебе за твой труд! Хотелось бы узнать, как и можно ли вообще устроиться на работу программистом в Европу если не было карьерного опыта? Буду благодарен за ответ
@РомаНенавижугуглплюс4 ай бұрын
Странный паттерн наблюдатель, по факту он не наблюдает, а его пинают. А весь толк даёт наследование с полиморфизмом.
@edv_ccode3 ай бұрын
В начале (5:20) вы указали, что выполняемые действия могут зависеть друг от друга. Но до конца видео так и не указали на решение этой проблемы. Как раз наоборот - Наблюдатели ничего не знают (не должны знать) о других наблюдателях, ровно как и порядок "наблюдения" никак не регламентируется. Также в видео не указано, как организовать "подписку" на событие. Вы утверждаете, что мы исходный класс не правим. Но это не совсем верно - мы же должны добавить нового Наблюдателя в нашу коллекцию наблюдателей.
@АлексейСытник-э9т3 ай бұрын
Если работать через авинжект спринга например, то это произойдёт автоматически
@edv_ccode3 ай бұрын
@АлексейСытник-э9т если что-то происходит автоматически - это все равно происходит. Я к тому, что изменение в исходный класс (регистратор) все равно нужно вносить. Не важно, вручную или автоматически
@osoboechuvstvo4 ай бұрын
Почему вы указали на 5:54 минуте последовательность: Событие + Публикатор + Наблюдатель ? Это ошибка или я что-то упустила?
@Grigoren_com4 ай бұрын
Владик, ты топчик! спасибо!
@Alex-ry7ur4 ай бұрын
Влад, привет! Лекцию можно будет посмотреть в записи? Только сегодня увидел твоё видео, а лекция была вчера 😢
@fakng-engineer4 ай бұрын
Привет, 3 октября проводим повтор, залетай по ссылке в описании, успеешь!
@Alex-ry7ur4 ай бұрын
@@fakng-engineer отлично, спасибо!
@snatvb4 ай бұрын
на самом деле самый популярный паттерн - это стратегия, где-то даже исследование было) и ты как раз его реализовал на самом деле обсервер должен подписываться, на обсерваблы, которые генерируют нотификации, у тебя же прямая передача в потребителя не может фича сама по себе подписаться на сохранение поста, ты в классе сохранения сам добавляешь фичу
@apostol_fet4 ай бұрын
По GOF, subject хранит в себе наблюдателей и уведомляет их при наступлении события (метода Notify) с передачей этого события, также в самом наблюдателе может хранится ссылка на наблюдаемый объект (subject), чтобы тот при уведомлении сам мог запрашивать необходимую информацию. Посмотрите книжку там все понятно описано
@uladzimirdrazdou15634 ай бұрын
Сурер понятно и полезно!
@PBmAsTeP3 ай бұрын
Полезная фитча такого паттерна - отмена события.. Если один из наблюдателей проверив условия не одобрил дальнейшие действия с данным обьектом - все остальные будут в курсе и так же пропустят мимо обработки.
@arthur.v.babayan4 ай бұрын
А вообще, можно создать такой класс наблюдатель, который имеет метод запуска, который на вход получает, не только объект события, но тип события. И после этого можно вообще в основной клас не заходить, а просто добавлять модули :) Прилижение с подгружаемыми модулями :)
@PavelNebo4 ай бұрын
Я вот сейчас тоже подумал, что в этом примере не рационально, что продюсер отправляет событие всем наблюдателям в списке.. Лучше отправить одно событие в некий сортировщик который сам решит по типу события что с ним делать и какому наблюдателю отправить.
@TimLaizaR2284 ай бұрын
@@PavelNebo на один и тот же тип события может быть куча разных получателей, каждый из которых обрабатывает его по своему. Эта концепция например широко используется в кафке - на один и тот же топик может быть создано куча консьюмер групп, обрабатывающие одни и те же события по своему, независимо друг от друга.
@PavelNebo4 ай бұрын
@@TimLaizaR228 ну я это и описал. Отдельный клас который занимается распределением событий по нужным получателям, а продюсер отправляет одно событие в этот класс
@naximchik3 ай бұрын
@@PavelNebo вы придумали кафку и систему очередей в целом))
@megaboy2k3 ай бұрын
Но ведь теперь каждый класс наблюдатель будет получать событие, которое может быть не для него и фильтровать его уже внутри себя. Получается некоторый оверхед производительности
@Monax-go6vq4 ай бұрын
Я думал, что чамый популярный паттерн - это MVC, да так оно и есть
@lev4314 ай бұрын
Это база везде
@wil99214 ай бұрын
Очень круто) но как нам после создания нового наблюдателя добавить его в лист наблюдателей PostSaver?
@letsplay60514 ай бұрын
Если речь о Spring, то есть такое понятие как "Внедрение зависимостей". Spring сам создаст список всех наблюдателей.
@naximchik3 ай бұрын
ага, этот момент не расскрыт
@uzurbatya4 ай бұрын
Мишустин Влад, ты молодец, отлично сделал
@prosvet77314 ай бұрын
+ За паттерны, у тебя хорошо получается)
@mirrorcoder19924 ай бұрын
Я прошел только за год 10 собеседований и ни на одном не спросили про паттерн этот. Звучит очень клик-бейтно и плюс еще не очень удачный пример и не совсем правильное и очевидное приминение этого паттерна и особенно в заданном контексте сиутации. Очень рад, что умеете снимать контент и продвигать его, но пригласите, пожалуйста экспертов еще для проверки сценариев. Потому что подача красивая и быстрая, но суть некачественная. А ведь было бы полезно иногда обновлять свои знания какие-то таким образом.
@ВасилийГоловко-д9и4 ай бұрын
Один из моих любимых шаблонов - часто его использую. Еще есть стратегия, тоже круто паттерн
@СашаИванов-д8щ2ь4 ай бұрын
четко расскзал, про паттерн "посетитель" (visitor) расскажи так же
@ВВВППП-в6г4 ай бұрын
Непонятно для других языков. Будет ли считаться "наблюдателем" если класс или микросервис создает посты, другой микросервис или класс мониторит появление новых постов в БД и шлет уведомления и т.д.?
@EgorFrade4 ай бұрын
топ видео! а как ты делаешь такие крутые анимации ?
@dfbdtrhgwtwd71494 ай бұрын
"Отдельными компонентами программы являются классы и объекты"? Vlad, ты уверен что хорошо сформулировал свою мысль? Класс - это design-time (если речь не идет про static class - там есть ньюансы), а объект - это run-time.
@nnz134 ай бұрын
Но ведь наблюдатель добавления рекламы в пост должен менять сам пост, поэтому он должен выполниться самым первым, а это уже декоратор какой-то
@hakooplayplay32124 ай бұрын
если он меняет сам пост, а не просто реагирует на него, то это не обсервер :) Это происходит на этапе создания и сохранения поста, то есть до того как мы создаем событие
@vitaliykolomiets66094 ай бұрын
круто!!! спасибо!!!
@tregubov4 ай бұрын
чувак, инфа огонь, мерси!
@КириллИгоревич-к1ф4 ай бұрын
Аж кайфанул от подачи...) -> List(Действие). Лайк extends Действие. Подписка extends Действие. Уведомления extends Действие. =)))
@user-aytan4 ай бұрын
Zdravstvuyte. Skolko stoit kurs Spring ?
@fakng-engineer4 ай бұрын
Привет, отдельного курса по Spring у нас нет, работа с этим фреймворком является частью программы интенсивного обучения - Java Буткемпа, где за 4 месяца ты изучаешь все ключевые инструменты и технологии, которые необходимы разработчику, чтобы получить работу! А также 3 октября в 19:00 по мск состоится вебинар - лекция “Основы Spring для начинающих Java Junior”, где разберем основы его работы, заходи по ссылке в шапке профиля!
@Stalker-b7m4 ай бұрын
Добрый день, меня интересует один вопрос на каком устройстве или операционной системе проще работать, виндовс или иос макбук или какой-нибудь Леонова йога 9 вопрос не в деньгах, а в удобстве может совместимости программ, хочется начать заниматься программированием?
@b33blebrox3 ай бұрын
Смотря на чем программировать. Если нет прямой необходимости в винде (как в .net и т.п.), то ни в коем случае ее не использовать. Макбук хорош (качество железа на высоте, все эргономично и удобно), на линухе во всех остальных случаях
@quadroninja27083 ай бұрын
@@b33blebroxа чем винда плоха?
@sodz51443 ай бұрын
12:40 Это называется Несвязность
@maroo20143 ай бұрын
Сохранение в базу данных лучше сделать в виде наблюдателя, а не хардкодить в методе создания ивента.
@decimaldelimiter5874 ай бұрын
По-моему, самый популярный - синглтон.
@hakooplayplay32124 ай бұрын
@@ВысоцкийАндрей-г5э согласен :) про синглтон можно упомянуть если уже назвал штук 5 паттернов :) так до кучи
@decimaldelimiter5874 ай бұрын
@@ВысоцкийАндрей-г5э Я ж не говорю, что он самый эффектный для собеседования; скорее, наоборот - один из самых тривиальных (=популярных).
@serhiis_4 ай бұрын
@@decimaldelimiter587 вообще синглтон это АНТИпаттерн
@weekendshow75674 ай бұрын
Патерны-матерны это хорошо. Но было бы в 💯 раз полезно, если бы вы сделали хотя бы 5 приложений с объяснением🎉 А то на одной "воде" далеко не уедешь ❤
@Nisitka4 ай бұрын
Я знаю где не спросят о нем - на разработчика с использованием библиотеки Qt, ведь она основывается на нем
@JimmyBaevsky4 ай бұрын
Какие "собесы"?! Пришел программист. В каких проектах вы принимали участие, в каких фирмах? Запрограммируйте вот эту задачу за 15 минут. Кто будет экзаменовать программиста по знанию языка программирования? Только с дуба рухнувший!😂 А если экзаменуют, бежать из такого дурдома без оглядки.😅
@ГеннадийШушпанов-д1ч3 ай бұрын
Программирование не любит суеты. Просьба "Запрограммируйте вот эту задачу за 15 минут" такой же повод "бежать из такого дурдома без оглядки".
@JimmyBaevsky3 ай бұрын
@ГеннадийШушпанов-д1ч Возможно. Однако пресловутые тесты IQ не случайно имеют ограничение по времени выполнения. Решение задач за деньги должно быть производительным. )) В программировании, которое теперь предпочитают называть "написанием кода", подчеркивая этим банальность этого занятия и отсутствие в нем таорческого начала, приобретает едва ли не главенствующее значение производительность. Прошли времена "суперпрограммистов", серенький руководитель предпочитает иметь дело с программистами того же оттенка, главное, чтобы они работали вместе и укладывались в поставленные им сроки. Есть мнение, что с появлением ИИ этот процесс станет еше более рутинным. Много также говорится об индийских программистах, которые пишут удивительно быстро. По этому скорость "кодирования" сейчас становится для работодателя важным показателем профессионализма програмииста. И тест на время, при всей его пошлости, имеет определенный смысл.
@igorseledtsov73454 ай бұрын
так и не сказано, что же это за зверь паттерн программмирования
@victoriahitro32033 ай бұрын
Классное видео, спасибо
@ebelmania25504 ай бұрын
У меня вопрос, разве этот паттерн в таком исполнении, не нарушает принцип подстановки Лисков?
@VoiceStudioTube3 ай бұрын
А в чем проблема? В каком месте у вас сомнения?
@ruslanm.11204 ай бұрын
Какой паттерн будет собирать всех наблюдателей в один список?
@FightRebelAndRiot4 ай бұрын
Я конечно не 7, а всего лишь 6 лет в индустрии. Но меня ни разу ни на одном собеседовании не спрашивали про этот паттерн. Хотя собеседуюсь довольно часто. Пару раз было такое, что меня спрашивали о том, какие паттерны я знаю и просили рассказать про парочку. Обычно первыми на ум приходили: стратегия, фабрика, синглтон.
@xesax4 ай бұрын
+
@КириллЛомовской3 ай бұрын
+
@enterprise75854 ай бұрын
Сохранять пост стоило бы тоже по евенту, и выдавать другое событие
@БАХА-в1о4 ай бұрын
Слушай друг, откуда у тебя столько времени на все это ?
@mikhailsloushch50524 ай бұрын
Самый главный паттерн - это абстрактный метод
@АндрейБелозеров-н1з4 ай бұрын
Брат, моно побольше патернов
@DeadRabbitCanDance4 ай бұрын
Если телеграммом не пользуюсь, то зарегистрироваться не получится? Печально. Вообще мне нужно не сайт сделать, а сервер для Unity приложения (хранение данных по игрокам, регистрация всяких операций типа купил/продал/сделал) соответственно база данных и какой-то апи для взаимодействия из Unity.
@fakng-engineer4 ай бұрын
Зарегистрироваться получится, в телеграме общение и всякие приятные бонусы, но все необходимые ссылки дублируются на почту
@mihhha85524 ай бұрын
Привет, запиши пожалуйста видео как работать с очередями
@dimalegendarypro3 ай бұрын
Нет чувак!Самый популярный паттерн стратегия.
@TheDustyChannel33344 ай бұрын
Зарегистрироваться на вебинар невозможно, форма внизу не отображается, только призыв написан.
@fakng-engineer4 ай бұрын
Попробуй включить впн, или отключить ADblock в браузере, должно помочь
@AbcDef-nv7qy4 ай бұрын
Спасибо!
@evgeniyzhukov5024 ай бұрын
А как слушатель понимает, что это событие он еще не получал?
@VoiceStudioTube3 ай бұрын
В конце видео гоготнул со слова лаконичный)
@donlinoleum8314 ай бұрын
Братан, ты крут как яйца вкрутую) Как целый мешок яиц вкрутую!) Очень полезный видос! Спасибо)
@aleks_versus4 ай бұрын
Нихрена не понял. Начал с функции, в которую мы напихиваем вызовы других функций, а потом перескочил к событиям. Откуда взялись события, чего ради это должно быть проще спронктировать?
@dfbdtrhgwtwd71494 ай бұрын
Этот ролик наглядно демонстрирует отсталость Java от C#. В С# весь этот "паттерн" реализован на уровне самого языка (Events) и доступен разработчикам в готовом виде (да еще и с кучей дополнительных фишек) сразу "из коробки". В Java же нужно писать все самому ручками, со всеми погрешностями и дальнейшей дополнительной поддержкой.
@userxh-sg6cg4 ай бұрын
С# сейчас часто применяется в проектах?
@dfbdtrhgwtwd71494 ай бұрын
@@userxh-sg6cg Смотря в каких проектах. В крупных компаниях для реализации больших сложных проектах - часто!
@Kil41kk4 күн бұрын
Интересно твоё мнение о джанго
@AndreyJDev4 ай бұрын
Не знаю, какой у вас самый популярный патерн, а у меня собесах про солид все спрашивают.
@MrRomanvideo4 ай бұрын
Это не паттерн😅
@koller184 ай бұрын
@@ВысоцкийАндрей-г5э , штука у черепахи на спине панцирь, а он говорит о каком то непрерывном потоке слов
@BurmAlex4 ай бұрын
Dependency Injection/Inversion?
@iosswiftuipractice37934 ай бұрын
Этим солидам никто уже не следует в России, говнокодеров много. Главное чтобы работало. А те кто спрашивают это на сабесе просто пытаются найти лоха который будет работать за них и кому можно платить в 3 раза меньше. То же касается с тест заданием и лайфкодингом. Мне насрать что чел знает, главное чтобы он сделал то что ему говорят сделать. Пока hr годами ищут и смотрят на текучку, другие тупо берут и дообувают типа. Еще валите оттуда где там вам говорят что будет 2-3 или более сабесов, сразу нахер
@Khodorisful4 ай бұрын
Получается, что PostSaver занимается больше чем одной задачей. Его код постоянно необходимо править , добавляя новых наблюдателей да и еще код их вызова циклического постоянно будет во всех подобных классах с наблюдателями. А если потом окажется что не про все посты нужно отправлять уведомление? По-моему логика оповещения должна быть вынесена на уровень выше, где вызывается сам PostSaver.
@testdeim4 ай бұрын
Автор видео не понял как работает этот паттерн. Да и вы тоже. Если окажется, что уведомления нужно отправлять не на все посты, то одписчик отправляющий уведомления сам может решить это на основе информации из события. Как я написал ниже в своём коментарии - PostSaver это по сути модель, если брать архитектуру MVC. Модель ничего не должна знать о подписчиках (вот эти все классы уведомлений, рекламы, статистики). Она должна знать всего об одном классе - классе Наблюдателя. Одного. И после сохранения поста бросать событие в этот Наблюдатель, вы зывая его метод accept(event). А уже Наблюдатель знает кто подписан на принимаемый им тип событий и он отправляет это событие обработчикам (классам работы с уведомнениями, рекламой, статистикой). Таким образом у нас получается чистая модель, код которой мы больше не трогаем. Это позволяет использовать её в других местах, для кототых, например, вот эти все уведомления, статистика, реклама не нужны. А также эта моель легко покрывается тестами, потому что не содержит в себе лишних классов.
@testdeim4 ай бұрын
На счёт вынести логику оповещения выше. В целом, да, она обычно вынесена выше. Но это реализовано не вынесением её туда, откуда вызывается этот PostSaver, а вызовом её в событиях модели. Но там реализован такой же паттерн Наблюдатель. Поэтому в контексте обучающего видео, эти вещи приплетатть сюда не стоит, чтобы не усложнять понимание сути паттерна. Т.к. это уже касается не паттерна как такогвого, а конкретной реализации.
@Khodorisful4 ай бұрын
@@testdeim Инжектим PostObserver где прописана логика оповещение что кому и при каких условиях. В PostSaver мы только один раз вызываем PostObserver и передаем туда актуальный объект Post. Это годится если в самом Post есть вся необходимая информация для того чтобы решить уведомлять или нет. Но что если отправка будет зависеть от каких либо других факторов, о которых нет информации в Post? Прокидывать какой то "notify=false" флаг?
@testdeim4 ай бұрын
@@Khodorisful тут либо в ивент добавляем нужную информацию (не обязательно же в ивент кидать весь объект Post и/или только его). Тоесть собираем ивент со всеми нужными данными (хоть весь Post, хоть его часть, хоть ещё чо то кроме него, да хоть бы и тот же notify=false). Но notify=false можно в том случае, если PostSaver обладает информацией о том делать ли уведомление. Но обычно не обладает и не должен. Эту информацию знает (или должен узнавать) непосредственно сам обрабочик события. Если брать в пример уведомления, то класс отправляющий уведомления, принимает событие с постом, понимает из него какого типа этот пост, делает запрос в хранилище пользователей у которых настройка "получать уведомления" и им отправляет эти уведомления. Ни сам PostSaver, ни Наблюдатель ничего знать не знают об уведомлениях и не должны.
@Fjaieb4 ай бұрын
Разработчик из Амстердама , скажи хватит ли у тебя оперативки на все объекты в твоей «Мега крутой соц сети»? Если бы ты рассказывал это в контексте SOLID принципов, то в целом ок. Но ты суешь это в идее где у тебя будет много событий , а значит у тебя рано или поздно оперативка кончится и привет memoryExeption
@Khodorisful4 ай бұрын
Запишет сообщение в брокер сообщений который доставит его получателям на каком угодно количестве серверов. Да и это очень уж нужно постараться чтобы забить память просто инициализацией обьектов)
@ЮрийДымов-у6щ4 ай бұрын
Сингальтон
@НиколайСкородумов-л7з4 ай бұрын
thks, bro! =)
@alexanderkuznetsov6344 ай бұрын
звук печатающей машинки в левом ухе честно отвлекает