No video

Мост (Bridge) ► Шаблон проектирования ► Урок №18

  Рет қаралды 11,074

Dmitry Afanasyev

Dmitry Afanasyev

Күн бұрын

Мост - структурный шаблон (паттерн) проектирования. Неоднозначный шаблон - с одной стороны ничего нового - сплошные дежавю при ознакомлении, с другой стороны требует более детального подхода и правильных примеров. Для тех кто боится воды - не смотреть - го на вики - всё узнаете за 5 минут, а тут на 50мин воды - обоссысь хоть в сапоги. Всем остальным - велком - специально для вас мегапримеры. Не забываем подписываться на канал и ставить лайкосик! Спасибо!
#шаблоны_проектирования #Bridge #Мост
*
★ Автор: Дмитрий Афанасьев.
★ Канал: clck.ru/JVYct
*
► Выразить благодарность, поддержать донатом развитие канала.
www.donational...
*
► Еще интересные курсы:
★ Видеокурс по Laravel: clck.ru/JVYa2
★ Видеокурс по Git: clck.ru/JVYYm
★ Объяснение SOLID: clck.ru/JVYXq
★ Шаблоны проектирования: clck.ru/JVYX7
★★★ Все курсы → clck.ru/JVYVd

Пікірлер: 53
@atlantatesla9348
@atlantatesla9348 2 ай бұрын
У вас отличная подача, благодаря вам начинаю понимать паттерны. Спасибо! 24:07 - "Давай попробуем. Да, я уже на самом деле попробовал, сейчас расскажу тебе, не переживай" Вы на этой фразе мега харизматичный)
@user-zc7vw5qx4h
@user-zc7vw5qx4h Жыл бұрын
Да, коварный паттерн, и вы правы, что почти все источники трактуют его вольнее чем остальные паттерны. Но и вы таки тему до конца не раскрыли .) Для тех кто любит быстро, но глубоко: "Мост - это композиция шаблонного метода и стратегии". Да, и, стратегия не обязана ограничиваться рантаймом.
@otabeksobirov7686
@otabeksobirov7686 4 жыл бұрын
Нового года так не жду, как видео в канале Дмитрия
@user-yr9rq7we2n
@user-yr9rq7we2n Жыл бұрын
Мощный разбор шаблона Мост. Спасибо! Теперь понятно зачем он нужен. Он нужен когда у нас есть множество категорий объекта (допустим, N категорий) и для каждой категории есть несколько реализаций (допустим, M реализаций). Если делать в лоб (без паттернов), то для каждой категории и для каждой реализации нужно создавать свой класс, всего M*N классов. А это сложно если категорий и реализаций много. Вместо этого мы создаем N классов-абстракций для каждой категории и M классов-реализаций. Всего M+N вместо M*N, то есть намного меньше.
@anatoliiilescu839
@anatoliiilescu839 4 жыл бұрын
ДМИТРИЙ как я рад видеть вас!
@privet_baget
@privet_baget 4 жыл бұрын
Как обычно лайкосик, спасибо за видео, Дмитрий!)
@user-bq1vw5li5v
@user-bq1vw5li5v 2 жыл бұрын
Скорострелы и те кто любят поглубже)) Это гениально! Лей воду, Дима, отлично у тебя получается.
@kiischivarino5139
@kiischivarino5139 2 жыл бұрын
17:37 Вот у нас палка в руке. И мы ее имеем. Все понятно, спасибо))
@DrTopk
@DrTopk 3 жыл бұрын
это просто божественно, Дмитрий!
@eb6006
@eb6006 3 жыл бұрын
Спасибо за работу! Я думаю твои скринкасты действительно помагают многим расти.
@romanbush5164
@romanbush5164 Жыл бұрын
Мне больше помог разобраться пример с оплатой труда разработчика, и сборкой программы. пример на metanit c#. Я понял что основная идея, как у шаблона делегирование
@kostinaleksey
@kostinaleksey 8 ай бұрын
Кстати, проблематика, которую может решать мост, можно наблюдать после применения абстрактной фабрики. Если взять тот же пример из рефакторинг.гуру про семейства мебели. Можно семейства и их вариации вынести в 2 отдельные плоскости. Например, диван, кресло и стол - это абстракции. А стили (модерн, ар-деко и викторианский) - это конкретные реализации
@dmitryleiko2869
@dmitryleiko2869 4 жыл бұрын
Лайк однозначно, спасибо огромное.
@user-lh9wz4hi5z
@user-lh9wz4hi5z 4 жыл бұрын
Спасибо огромное!
@user-gi3lg6yo8f
@user-gi3lg6yo8f 3 жыл бұрын
Спасибо за труды, Дмитрий!
@alexanderk4481
@alexanderk4481 Жыл бұрын
Спасибо )
@vitall789
@vitall789 4 жыл бұрын
От Стратегии еще как по мне можно отличить следующим: Гибкой модификацией базовой реализации в самом абстрактном классе (для каждой группы) - без изменения базовых реализаций и дублирования новых реализаций. Также в Стратегию могут передаваться ключи для агрегации, а в Мост передается объект реализации он же интерфейс.
@user-zg3jk3xh4w
@user-zg3jk3xh4w 4 жыл бұрын
Спасибо!
@extreme_pw
@extreme_pw 3 жыл бұрын
17:25-18:19 получается композиция и агрегирование это как врождённые и приобретенные навыки.
@TsA1ex
@TsA1ex 4 жыл бұрын
Laravel 8 вышел! Изменений крутых куча. Плюс выпады в сторону SPA на бекенде
@DmitryAfanasyev
@DmitryAfanasyev 4 жыл бұрын
Только вчера смотрел и была плашка что документация еще не на релизную версию.... Будем сегодня готовить видос.
@olexklym4132
@olexklym4132 2 жыл бұрын
Спасибо, Дима!! Пересмотрел несколько раз. Если бы не твой пример с Виджетами, то сразу бы все понял. И остался бы тупым. А когда начал вникать в твой пример, утро день вечер и вот ночь все сошлось. Как ты и говорил, очень простой, но сука сложный. Спасибо тебе!!)
@DmitryAfanasyev
@DmitryAfanasyev 2 жыл бұрын
Благодарю!
@alexanderk4481
@alexanderk4481 Жыл бұрын
Я так для себя понял, что все таки WidgetRealization... это адаптер, тк мы приводим к одному интерфейсу, и адаптируем name к title ,)))) и при этом является не реализацией, а абстракцией, неким шаблоном( тк там просто гет сет). А реализация сама находится в WidgetMiddle..., и реализация там разная, где то логика создания большого виджета, где то маленького. Получается эдакий фабричный метод с множествами реализаций ,)))) и получением объекта с которым работаешь в параметре функции "реализации", а не в дочернем классе. Вот и получается. 3 реализации * 4 абстракции = 12 вариантов событий
@alexanderk4481
@alexanderk4481 Жыл бұрын
И при этом все это возможно, если реализация у плодящихся классов одинаковая, а классы апи-абстракций-сущьностей можно привести к одинаковым функциям
@arman-6172
@arman-6172 2 жыл бұрын
Отличный материал. Отличная подача. 50 минут пролетели очень быстро, и это не считая пауз чтоб переварить некоторые вещи) Большое спасибо! Единственное может не хватило в конце как теперь проще добавляется функционал (сущности, виджеты), как можно просто заменить другой реализацией, в том числе какой-то сторонней либой. Т.е. как итог зачем эт все делали. Ведь это все не для статуса, что в проекте реализовали паттерн Мост)
@DmitryAfanasyev
@DmitryAfanasyev 2 жыл бұрын
Будем стараться 🙏
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 2 жыл бұрын
Интересный ролик. Надо назвать его как Обзор... И сделать свой ролик на 10 минут)
@user-du6ns4ww6o
@user-du6ns4ww6o 2 жыл бұрын
Я заплатил за онлайн курс большие деньги, в этом курсе были паттерны проектирования и я практически ничего не понял даже с 10 просмотра, скажите мне пожалуйста почему автор данного канала может объяснить понятно с первого раза а всякие онлайн школы не могут донести суть с десятого, возможно я глуп или кто то просто делает деньги на глупости.
@ildarvalitov2568
@ildarvalitov2568 3 жыл бұрын
Только что пришёл с рефакторинг гуру, сначала там изучил. Забавно, что ты начал с описания того, что паттерны постоянно трактуют по-разному и сам сразу-же подвердил это на практике инвертировав тезис с реф.гуру. Там одна из проблем звучит: "Когда вы хотите, чтобы реализацию можно было бы изменять во время выполнения программы." Т.е. это говорится про мост, а не стратегию =)
@DmitryAfanasyev
@DmitryAfanasyev 3 жыл бұрын
Так в чем я не прав?
@vesh95
@vesh95 2 жыл бұрын
40:11 Почему не адаптер? Какой-то класс приводится к интерфейсу из несовместимой структуры посредством реализации этого интерфейса классом оберткой. По сути мы адаптировали модель к интерфейсу. Если это все-таки адаптер, то пора прекращать бы мне у типизированных реквестов реализовать интерфейсы с нужными геттерами, а начать реквесты упаковывать в такие классы и в них уже для геттеров вытягивать данные из реквеста
@vesh95
@vesh95 2 жыл бұрын
Если задуматься а почему все-таки не реализовать интерфейс данных самим реквестом, то тут получается, что мы приведем все к SPR (реквест перестанет выполнять роль объекта данных). По сути: AlertRequest : AlertDataInterface { rules(), attributes(), messages(), куча реализаций геттеров } AlertDataInterface { куча геттеров } Превращается в: AlertRequest { rules(), attributes(), messages() } (можно узреть, что алерт ничего левого не реализует и остается неизменным) AlertDataInterface { куча геттеров } AlertRequestDataObject : AlertDataInterface { __construct(AlertRequest $r), куча реализаций геттеров } Чего достигаем: 1. чистые классы реквестов и джуны не какаются, когда залезают поправить рулесы 2. мы не пихаем сам реквест в хэндлеры, а извлекаем его данные (после чего он может безопасно умереть, освободив пару кб памяти) 3. Мы имеем возможность абстрагировать AlertRequest в конструкторе по Request и, возможно без модификации, извлекать нужные данные из других реквестов
@13vo1n
@13vo1n 3 жыл бұрын
Твои слова водица, так не годиться. Очень интерестно. Спасибо большое.
@eugenenovikov671
@eugenenovikov671 2 ай бұрын
вы специально ударение ставить так рефактОринг?
@panchenkko_vlad
@panchenkko_vlad 3 жыл бұрын
Спасибо за видео. Разве не нужно в WidgetAbstract определить абстрактный метод run?
@DmitryAfanasyev
@DmitryAfanasyev 3 жыл бұрын
Можно, да.
@user-dv9fk1hd3s
@user-dv9fk1hd3s 3 жыл бұрын
Вопрос не по теме: Как называется шрифт в IDE на 24:15 ? Прикольный.
@user-dv9fk1hd3s
@user-dv9fk1hd3s 3 жыл бұрын
Уже сам нашёл - JetBrains Mono
@DmitryAfanasyev
@DmitryAfanasyev 3 жыл бұрын
Да он вроде по умолчанию. Я не менял.
@AlexeyKamchatkin
@AlexeyKamchatkin 3 жыл бұрын
Даже с таким микрофоном, вам удается выдавать очень тихий звук..
@DmitryAfanasyev
@DmitryAfanasyev 3 жыл бұрын
Всё хорошо со звуком
@AlexeyKamchatkin
@AlexeyKamchatkin 3 жыл бұрын
Dmitry Afanasyev конечно если выкручивать громкость на выше среднего, послушайте нормальные ролики на ютубе чтобы понять о чем я говорю
@DmitryAfanasyev
@DmitryAfanasyev 3 жыл бұрын
Перепроверил. Если сравнивать с видео из курса по меркуриал - небо и земля. В этом видео в разы громче. Кликнул на рандомное видео в посказках, попал на канал itvdn видео о докере, свежее - у них звук не громче. У айтибороды громче, но и текущая громкость комфортна. Пока не вижу усиливать - если усилить микрофон, а он сейчас работает на 75%, то будет слышно как происходит глотание слюны - вряд ли такое надо. Если усиливать при монтаже.... а зачем?
@AlexeyKamchatkin
@AlexeyKamchatkin 3 жыл бұрын
Dmitry Afanasyev ну похоже либо так, либо слушать звуки нотификаций на компьютере которые обычно завучат громче чем большинство видео на ютубе , вообщем дискомфорт
@DmitryAfanasyev
@DmitryAfanasyev 3 жыл бұрын
учту. спасибо. поиграю с настройками.
@stok_uz
@stok_uz Жыл бұрын
залетает как сериал
CHOCKY MILK.. 🤣 #shorts
00:20
Savage Vlogs
Рет қаралды 29 МЛН
لااا! هذه البرتقالة مزعجة جدًا #قصير
00:15
One More Arabic
Рет қаралды 51 МЛН
Box jumping challenge, who stepped on the trap? #FunnyFamily #PartyGames
00:31
Family Games Media
Рет қаралды 33 МЛН
C# Bridge Pattern Implementation: A Developer's Guide
27:18
campbelltech
Рет қаралды 1,3 М.
Паттерн Декоратор
20:33
Volodya Mozhenkov
Рет қаралды 30 М.
10 Design Patterns Explained in 10 Minutes
11:04
Fireship
Рет қаралды 2,2 МЛН
Что такое gRPC и Protobuf?
8:37
Merion Academy
Рет қаралды 48 М.
CHOCKY MILK.. 🤣 #shorts
00:20
Savage Vlogs
Рет қаралды 29 МЛН