Шаблон структурного проектирования

Давайте начнем с конкретного определения, прямо из книги GoF, Шаблоны проектирования.

«Отделяет абстракцию от ее реализации, чтобы они могли различаться независимо».

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

Он следует принципу «предпочитать композицию наследованию».

Абстракция? Реализация? Звучит страшно? Сохраняй спокойствие и давай посмотрим

  • Абстракция - это общая идея того, что необходимо сделать, тогда как Реализация - это то, как этого добиться в различных обстоятельствах.

Хватит теорий, давайте разберемся с практическими сценариями.

Требование 1: напишите программу, умеющую рисовать круг и прямоугольник.

Решение :

Требование 2: напишите программу, которая может рисовать круги и прямоугольники красного и синего цветов.

Решение : -

Требование 3: напишите программу, которая может рисовать круги и прямоугольники красного, синего и зеленого цветов.

Решение : -

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

На помощь приходит узор мостов.

Таким образом, итоговая программа выглядит так:

Когда использовать паттерн мост

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

Преимущества:

  • Разъединяет интерфейс объекта и делает его независимым.
  • Улучшенная расширяемость (вы можете расширять (создавать подклассы) иерархии абстракции и реализации независимо).
  • Предоставляет хорошее решение для кроссплатформенной разработки.

Похоже ли это на шаблон адаптера?

  • Шаблон моста разделяет элементы абстракции и реализации класса, создавая две отдельные иерархии классов, которые изменяются независимо, тогда как шаблон адаптера помогает двум несовместимым классам работать вместе.
  • Кроме того, как заявил GOF, «Адаптер заставляет вещи работать после того, как они были спроектированы; с другой стороны, Bridge заставляет их работать раньше, чем они есть ». . Это означает, что шаблон адаптера обычно используется с уже разработанным приложением для совместной работы двух несовместимых классов. тогда как шаблон моста обычно разрабатывается заранее, чтобы позволить разработчику разработать часть приложения, а другую часть можно было написать самостоятельно кем-то.

Связь с другими шаблонами дизайна:

  • Мост, Состояние, Стратегия (и в некоторой степени Адаптер) имеют очень похожие структуры (основанные на «Составе»), которые делегируют работу другим объекты . Однако все они предназначены для решения разного набора задач.

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

Ссылка:

Https://en.wikipedia.org/wiki/Bridge_pattern