Сайт вебмастера

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

04-11-2019Время чтения ~ 2 мин.PHP/ООП 5782

Паттерн Bridge представляет собой возможность объединения двух разных интерфейсов так, чтобы каждый из них развивался раздельно. Чтобы понять его назначение, проще всего объяснить на примере Java.

Приложение Java должны работать в разных операционных системах и возникает проблема унификации элементов. Например чекбоксы или выпадающие списки в Windows и Linux имеют разный вид. Таким образом, библиотека визуальных компонентов должна развиваться отдельно, но будет ещё один интерфейс, который будет реализовывать уже конкретную версию отрисовки. Вот такая взаимосвязь и реализуется через шаблон Мост.

Начать, наверное лучше с просмотра исходного кода.

Итак. У нас есть некий интерфейс BridgeInterface, которым определяется тип данных. Его реализация происходит в классах Bridge1 и Bridge2.

Также у нас есть некий класс приложения App, который расширяет абстрактный класс AppAbstract. Это класс в своём конструкторе принимает какой-то конкретный BridgeInterface и выполняет с ним необходимые операции.

Внешне это выглядит так:

$a = new App(new Bridge1());
$a->run();
 
$b = new App(new Bridge2());
$b->run();

Если внимательно посмотреть, то Bridge очень похож на шаблон Strategy. Различия носят больше «идеологический» характер. В Bridge упор делается на строгую типизацию, поэтому используются интерфейсы и абстрактные классы. В Стратегии же, главная задача — запуск конкретного метода, который может быть достаточно «вольным».

Bridge - используется там, где существует большое количество классов со сложной типизацией, которые развиваются раздельно. Таких задач в PHP практически не существует, поэтому паттерн особо и не используется.

Похожие записи