Шаблоны Java. Bridge (Мост)

Поделиться
HTML-код
  • Опубликовано: 6 ноя 2024

Комментарии • 41

  • @shlm3650
    @shlm3650 4 года назад +39

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

    • @AnnaKatNYN
      @AnnaKatNYN Год назад +3

      На двух наследниках и двух имплементациях разница не ощутима, но, допустим, понадобилось добавить PHP dev и какую-нить CMS и тогда придется создавать 9 классов, вместо 6. Будет (BankSystem, PHP), (BankSystem, Java), (BankSystem, C++), (StockExchange, PHP), (StockExchange, Java), (StockExchange, C++), (CMS, PHP), (CMS, Java), (CMS, C++). А используя паттерн "мост", нам нужно будет добавить всего 2 реализации. Имплементировать интерфейс Developer и расширить класс Programm. А если мы еще захотим добавить один язык и еще одну программу, то разница будет еще более ощутимая.

  • @Baannia
    @Baannia 7 лет назад +2

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

  • @MrAPPOLON123
    @MrAPPOLON123 2 года назад +12

    и где тут мост?

  • @Charnohora
    @Charnohora 6 лет назад +34

    Блин. Шикарно, что кратное видео, но! Вы уж очень много путаете, трудно смотреть. Ну и стиль кода.. Диаграммы - хорошо. А суть шаблона не раскрыта, не рассказана.

  • @user_emodzithroll3553
    @user_emodzithroll3553 7 лет назад +2

    Здравствуйте. Лично для меня Вы очень четко выбираете примеры.Не самолеты и автомобили... Спасибо за ваш труд. Очень хочу понять когда и какой использовать. И ... нужно ли их воспроизводить по памяти

    • @EugeneSuleimanov
      @EugeneSuleimanov  7 лет назад +3

      Здраствуйте, Андрей.
      Спасибо за отзыв.
      Здесь и помогают примеры + понимание основ паттерна.
      Когда встретитесь с задачей, которая похожа на пример - используйте паттерн.
      Крайне рекомендую придумать свои примеры - так лучше отложится в памяти.
      Здесь, также, крайне помогает опыт.

    • @user_emodzithroll3553
      @user_emodzithroll3553 7 лет назад

      Спасибо

  • @artemief
    @artemief 10 месяцев назад

    Наследование - это очень мощная штучка 😂

  • @wix9694
    @wix9694 3 года назад

    Как же хорошо ты объясняешь, просто лучший!

  • @VictorLeon-h8c
    @VictorLeon-h8c 8 лет назад +1

    Супер! Все просто и понятным языком

  • @nikolaycheremnov5879
    @nikolaycheremnov5879 3 года назад +3

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

  • @Альберт-ч1з
    @Альберт-ч1з 7 лет назад +1

    Красивое видео!!! Побольше бы таких!

  • @ГлебВалерьевич-у6ы
    @ГлебВалерьевич-у6ы 2 года назад

    Спасибо!

  • @shluhogon_42
    @shluhogon_42 Год назад +1

    Не понятна суть. Где, собственно, сам мост?

    • @MuratFatykhov
      @MuratFatykhov 10 месяцев назад +2

      Согласен. Автору конечно большой респект за доходчивое объяснение примеров, но сама суть паттернов передается скудновато. К концу каждого урока остается ощущение, что ты понял практический пример, а для чего все это делалось уже подзабыл.
      Пришел к решению загонять код и текстовое описание урока в нейронку и получаю что-то хоть сколько то похожее на объяснение сути, а не простое проговаривание классов и переменных из примера. Далее ответ нейросети по запросу "Где здесь реализуется "Мост"?" :
      В данном примере "Мост" реализуется следующим образом:
      Абстракция (Program): Это абстрактный класс, представляющий высокоуровневую логику программы. Он содержит ссылку на объект типа Developer.
      Реализация (Developer): Это интерфейс, представляющий низкоуровневую логику разработчика.
      Конкретные классы Абстракции (BankSystem, StockExchange): Это конкретные классы, расширяющие абстрактный класс Program и реализующие его метод developProgram(). Каждый из этих классов принимает объект Developer в конструкторе и использует его для разработки программы.
      Конкретные классы Реализации (JavaDeveloper, CppDeveloper): Это классы, реализующие интерфейс Developer. У каждого из этих классов есть своя реализация метода writeCode().
      Теперь давайте посмотрим, где проявляется "Мост":
      Сам "Мост" проявляется в том, что Program содержит ссылку на объект Developer, но они не жестко связаны между собой. То есть, Program предоставляет абстракцию высокого уровня (разработка программы), но реализацию этой абстракции (написание кода) она делегирует объекту Developer.
      При использовании "Моста", изменения в Program и Developer могут происходить независимо друг от друга. Например, можно добавить новые типы программ или новых разработчиков, не затрагивая существующий код.
      Таким образом, "Мост" в данном примере проявляется в отделении абстракции от её реализации и предоставлении гибкости для изменений в каждой из сторон.

  • @Andrzej3935
    @Andrzej3935 2 года назад

    Большое спасибо

  • @elizabeta3054
    @elizabeta3054 2 года назад +1

    Понимаю что причины могут быть разные для появления шаблонов, но верно ли что реализация Bridge и Adapter одинаковая? И там и там экстендится класс в который передается ссылка на экземпляр класса с определенным интерфейсом, что позволяет оперировать методами последнего. Реализация одинаковая у Bridge и Adapter?

  • @johnmarrewood
    @johnmarrewood 2 года назад +1

    Чем данный паттерн из ролика отличается от декоратора?

  • @kek_pupold
    @kek_pupold 4 года назад +3

    Если я не ошибаюсь, то получается так:
    Есть Program, у которой есть поведение - developProgram().
    Это поведение делегируется разработчику(Developer).
    Разработчиков можно менять, у разных разработчиков может быть разное поведение. Получается, что Program может менять поведение в runtime.
    Кажется мне, что где-то я видел уже такое, интересно где?
    В паттерне "Стратегия" я это видел.
    Если я прав и это не "Мост", а "Стратегия", то что это за дезинформация? Или это гибрид стратегии и моста?
    Я без негатива, если что. Меня бесит паттерн "Мост", каждый по-своему его объясняет.

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 года назад

      en.m.wikipedia.org/wiki/Bridge_pattern
      Думаю, здесь наиболее корректное объяснение- старался следовать этому подходу, если видите неточность - напишите, пожалуйста- я изучу более детально. Спасибо.

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 года назад +1

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

    • @nikolaycheremnov5879
      @nikolaycheremnov5879 3 года назад

      Здравствуйте. Можете прочитать мой комментарий под видео выше и сказать своё мнение пожалуйста? Я разобраться не могу

    • @kcheban
      @kcheban 3 года назад +1

      Разные паттерны могут иметь ту же реализацию. Паттерн больше идентифицирует его назначение.
      Стратегия - позволяет переключаться между схожими поведениями.
      Мост - позволяет расширять программу в "двух плоскостях" - высокоуровневой плоскости и плоскости реализации.
      Некоторые отличающиеся детали:
      - в случае со стратегией, мы переключаемся между поведениями (например точный и долгий расчет маршрута, или неточный и быстрый). в то время как в мосте мы переключаемся между реализациями (например cpp/java developer, win gui / linux gui, plain text writer / html writer)
      - стратегия требует только одной иерархии (самих Strategy), в то время как мост вероятнее всего будет иметь две параллельные иерархии (как Developer и Program из примера)

  • @ivanchl
    @ivanchl 8 месяцев назад

    Для новичка сложно будет понять в чем здесь суть. Надо объяснить что разделяя два элемента которые работают вместе и работая с ихними абстракциями, мы создаем возможность изменять и создавать их отдельно друг от друга. Это и есть мост. Может так?

  • @ekaterinalvova4896
    @ekaterinalvova4896 2 года назад

    Очень напоминает паттерн Декоратор...

  • @vladyslavkrut7071
    @vladyslavkrut7071 8 лет назад

    Спасибо за урок! Подскажи, пожалуйста, название плагина, который UML рисует.

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 лет назад +1

      Всегда пожалуйста.
      Плагин называется UML Support - он стандартный для Ultimate Edition.
      Если у тебя Community, то придётся использовать другой плагин.

    • @vladyslavkrut7071
      @vladyslavkrut7071 8 лет назад

      Eugene Suleimanov Спасибо

  • @Tiertey
    @Tiertey 4 года назад +3

    Для быстрого создания итератора можно применять ключевое слово «iter» и идея сама создаст каркас итератора по примеру fori для фор. Возможно на момент записи видео такого ключевого слова в идее не было.

    • @corsair366
      @corsair366 3 года назад

      Для справки - в идее вы можете создавать сами какие хотите алиасы

  • @AndreyDeveloper
    @AndreyDeveloper 8 лет назад

    Уважаемый Евгений!
    А вот такая конструкция создания объектов как называется?
    И где и в какой книге (сайте) она была описана?
    Program [] programs = {
    new BankSystem(new CppDeveloper()),
    new StockExchange(new JavaDeveloper())
    };

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 лет назад

      Уважавемый, Andy!
      Вряд ли это можно назвать конструкцией создания объектов :)
      В production такое не применяется, а здесь используется для демонстрации работы учебного приложения.

    • @dmitrysavkin5981
      @dmitrysavkin5981 7 лет назад +5

      Это просто массив объектов типа Program

  • @pie4928
    @pie4928 Год назад

    Очень быстро.

  • @ahmedrapira7610
    @ahmedrapira7610 2 года назад +1

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

    • @shluhogon_42
      @shluhogon_42 Год назад

      От адаптера-то понятно чем отличается