Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Співбесіди Тестування Відео
Екосистема
Пакети Ресурси
Інше
Події Про нас

Bridge - відокремлення абстракції

Патерн Bridge розділяє абстракцію та її реалізацію на дві окремі ієрархії, щоб змінювати їх незалежно. Це рятує, коли є кілька незалежних вимірів варіативності і за наївного підходу класи множаться комбінаторно.

Приклад - канали сповіщення (email, SMS, push) × формати повідомлень (JSON, текст, HTML). Без Bridge довелось би писати EmailJsonNotifier, EmailPlainNotifier, SmsJsonNotifier… - добуток обох вимірів. Bridge тримає формат як окрему залежність (Formatter) усередині нотифікатора, тож канали і формати комбінуються вільно: 3 + 2 класи замість 3 × 2.

Різниця з Adapter: Adapter узгоджує вже наявні несумісні інтерфейси постфактум, а Bridge проєктується наперед, щоб дві осі змінювались окремо.

Коли НЕ варто: якщо вимір варіативності лише один - Bridge надлишковий, вистачить простого інтерфейсу зі стратегіями.

interface Formatter
{
  public function format(string $message): string;
}

class JsonFormatter implements Formatter
{
  public function format(string $message): string
  {
    return json_encode(['message' => $message]);
  }
}

class PlainFormatter implements Formatter
{
  public function format(string $message): string
  {
    return $message;
  }
}

abstract class NotifierBridge
{
  public function __construct(protected Formatter $formatter) {}

  abstract public function send(string $message): void;
}

class EmailNotifierBridge extends NotifierBridge
{
  public function send(string $message): void
  {
    $body = $this->formatter->format($message);
    // send email
  }
}

class SmsNotifierBridge extends NotifierBridge
{
  public function send(string $message): void
  {
    $body = $this->formatter->format($message);
    // send sms
  }
}

Ця стаття - частина серії

Патерни проєктування

7 / 7

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Читайте також

Посібники 13 червня 2026
Патерни проєктування

Singleton - один екземпляр

Патерн Singleton гарантує один екземпляр класу на весь застосунок. У Laravel замість класичного Singleton зі static-властивістю та приватним конструктором використовують контейнерний singleton: app()->singleton(...). Контейнер створює об'єкт один раз і повертає той самий екземпляр на всі залежно

Вакансії за темою

Центральне відділення комплектування  НГУ  (м.Дніпро)
Full-time Сьогодні

Backend Developer (PHP/Laravel), розробник систем цифрової логістики

Компанія "Центральне відділення комплектування НГУ" у місті Дніпро шукає в свою команду Backend Developer (PHP/Laravel), розробника систем цифрової логістики. Ми спеціалізуємося на розробці та впровадженні інноваційних рішень у сфері логістики та комплектування, що допомагають нашим клієнтам оптимізувати процеси та підвищувати ефективність бізнесу. Обов’язки: Розробка та підтримка систем цифрової логістики на базі PHP та фреймворку Laravel; Участь у проектуванні та розробці нового функціоналу; Взаємодія з іншими відділами для вирішення завдань та вдосконалення продукту. Вимоги: Досвід роботи з PHP та фреймворком Laravel від 2 років; Знання SQL та базове розуміння принципів роботи баз даних; Бажання вчитися та розвиватися в обраній сфері; Вміння працювати в команді та брати на себе відповідальність. Переваги: Конкурентна заробітна плата та можливість кар'єрного зростання; Цікаві проекти та можливість впливати на їх розвиток; Дружний колектив та комфортні умови праці. Якщо ви маєте бажання приєднатися до нашої команди та внести свій внесок у розвиток цифрової логістики, надсилайте своє резюме! Ми чекаємо саме на вас!

Яремчук І.П., ФОП
Full-time Вчора

Web-програміст (Fullstack, Laravel, Vue.Js)

Яремчук І.П., ФОП Віддалено За результатами співбесіди

Потрібен Fulstack developer. Ми спеціалізуємося на розробці веб-сайтів, CRM/ERP систем та інших програмних рішень для клієнтів з України, Європи та США. Ми пропонуємо вам можливість працювати віддалено з будь-якої точки світу, в команді професіоналів з багаторічним досвідом. Ви будете відповідати за розробку та підтримку веб-додатків, участь у проектуванні архітектури, взаємодію з клієнтами та іншими членами команди. Вимоги: Досвід роботи на позиції Fullstack Developer від 3 років Практичний досвід роботи з PHP, Larave, Filament Знання JavaScript (ES6+), HTML, CSS Досвід роботи з Vue Досвід роботи з базами даних (SQL або NoSQL) Розуміння принципів роботи RESTful API Активне використання АІ в розробці Вміння працювати в команді та готовність вчитися новому Якщо ви готові приєднатися до нашої команди та прийняти виклик розробки високоякісних програмних продуктів, надсилайте свої резюме. Ми готові розглянути кандидатів без вищої освіти, головне — ваш досвід та вміння.

Хартія, 13-та БрОП НГУ
Full-time Вчора

Backend Developer (PHP, Laravel), розробник систем цифрової логістики

Хартія, 13-та БрОП НГУ Віддалено ₴25,000 - ₴75,000

SENIOR FULL-STACK РОЗРОБНИК СИСТЕМ ЦИФРОВОЇ ЛОГІСТИКИ Ми шукаємо Backend Developer Для нас важливіше не те, чи ти працював саме з «ідеальним» набором технологій, а те, чи вмієш ти мислити як інженер, розбиратися в задачах, брати відповідальність за результат і рости разом. Стек можна опанувати,ми допоможемо з онбордингом, контекстом і підтримкою команди. Обов’язки розробляти та покращувати backend-частину продукту створювати інтеграції між сервісами працювати з даними, бізнес-логікою та внутрішніми процесами брати участь в обговоренні рішень разом із командою продукту, дизайну та інженерії покращувати стабільність, продуктивність і **надійність сервісів занурюватися в домен і впливати на те, як продукт розвивається далі Вимоги маєш від 2 років комерційного досвіду в backend-розробці добре розумієш принципи веброзробки, роботу з базами даних, Git вмієш писати чистий, зрозумілий код і не боїшся рефакторингу можеш самостійно розібратися в задачі, поставити уточнювальні запитання й довести її до результату Буде плюсом досвід із сучасним backend-стеком (наприклад: Node.js / TypeScript, PHP / Laravel, Python, Go, Java тощо) досвід роботи з SQL/NoSQL, Docker, CI/CD, тестуванням розуміння, як будуються масштабовані та надійні системи **Надсилайте свої резюме або телефонуйте на офіційний номер 3333 для призначення співбесіди.

Пакети за темою

Bagisto

bagisto/bagisto

Bagisto — це платформа для електронної комерції, побудована на Laravel. Вона надає готове рішення для створення та управління інтернет-магазинами з підтримкою каталогу товарів, замовлень, платежів та клієнтів.

27,248 v2.4.6 12 2

Lang

laravel-lang/lang

Список 126 мов для Laravel Framework, Laravel Jetstream, Laravel Fortify, Laravel Breeze, Laravel Cashier, Laravel Nova, Laravel Spark та Laravel UI.

7,777 15.31.4 2

Про статтю

Категорія
Посібники
Опубліковано
20 червня 2026
Час читання
1 хв
6

Поділитись