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

Поділитися
Вставка
  • Опубліковано 31 гру 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 років тому

      Спасибо

  • @wix9694
    @wix9694 3 роки тому

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

  • @nikolaycheremnov5879
    @nikolaycheremnov5879 4 роки тому +3

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

  • @Альберт-ч1з
    @Альберт-ч1з 8 років тому +1

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

  • @VictorLeon-h8c
    @VictorLeon-h8c 8 років тому +1

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

  • @artemiiie
    @artemiiie Рік тому

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

  • @shluhogon_42
    @shluhogon_42 Рік тому +1

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

    • @MuratFatykhov
      @MuratFatykhov Рік тому +2

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

  • @elizabeta3054
    @elizabeta3054 2 роки тому +1

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

  • @johnmarrewood
    @johnmarrewood 2 роки тому +1

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

  • @ivanchl
    @ivanchl 9 місяців тому

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

  • @ГлебВалерьевич-у6ы

    Спасибо!

  • @Andrzej3935
    @Andrzej3935 2 роки тому

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

  • @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 4 роки тому

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

    • @kcheban
      @kcheban 3 роки тому +1

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

  • @ekaterinalvova4896
    @ekaterinalvova4896 2 роки тому

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

  • @Tiertey
    @Tiertey 5 років тому +3

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

    • @corsair366
      @corsair366 3 роки тому

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

  • @vladyslavkrut7071
    @vladyslavkrut7071 8 років тому

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  8 років тому +1

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

    • @vladyslavkrut7071
      @vladyslavkrut7071 8 років тому

      Eugene Suleimanov Спасибо

  • @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 Рік тому

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