====== Мост (Bridge) ======
Паттерн Мост (Bridge) в PHP - это структурный паттерн проектирования, который разделяет один или несколько классов на две отдельные и независимые иерархии. Первая иерархия - это абстракция, вторая - это реализация.
Ключевой особенностью паттерна Мост является то, что абстракция и реализация могут изменяться независимо друг от друга без значительных изменений в коде. Это дает более гибкую архитектуру и облегчает добавление нового функционала.
===== Назначение =====
Отделить абстракцию от её реализации так, что они могут изменяться независимо друг от друга.
===== Диаграмма UML =====
{{:php:шаблоны_проектирования:uml25.png?500*500|Alt Bridge UML Diagram }}
===== Код =====
Вы можете найти этот код на [[https://github.com/domnikl/DesignPatternsPHP/tree/main/Structural/Bridge|GitHub]]
Formatter.php
PlainTextFormatter.php
HtmlFormatter.php
%s
implementation = $printer;
}
abstract public function get(): string;
}
HelloWorldService.php
implementation->format('Hello World');
}
}
PingService.php
implementation->format('pong');
}
}
===== Тест =====
Tests/BridgeTest.php
assertSame('Hello World', $service->get());
}
public function testCanPrintUsingTheHtmlFormatter()
{
$service = new HelloWorldService(new HtmlFormatter());
$this->assertSame('Hello World
', $service->get());
}
}