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 на каждую пару.