advanced

Bridge

Отделяйте abstraction от implementation, чтобы две dimensions of variation развивались без subclass explosion.

Bridge разделяет abstraction и implementation, чтобы две оси вариативности развивались независимо — форма vs renderer, канал сообщений vs transport, domain API vs storage backend. Предотвращает комбинаторный взрыв подклассов вроде `RedCircle`, `BlueCircle`, `RedSquare`.

На интервью: схема abstraction со ссылкой на implementation. Сравните с Adapter (задним числом) и Strategy (смена алгоритма).

Типовые ошибки: утечка implementation types через abstraction; bridge с одной реализацией в проде; over-abstracting стабильного кода.

Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.

Чеклист:

  • Две ортогональные оси названы явно.
  • Abstraction делегирует implementation interface.
  • Новые implementations не требуют новых abstractions.
  • Integration tests на каждую пару.