Пример
// Сторонняя библиотека логирования со своим интерфейсом
class ThirdPartyLogger {
public function writeLog(string $level, string $msg): void {}
}
// Наш интерфейс
interface Logger {
public function log(string $msg): void;
}
// Adapter — мост между ними
class LoggerAdapter implements Logger {
public function __construct(private ThirdPartyLogger $lib) {}
public function log(string $msg): void {
$this->lib->writeLog('info', $msg);
}
}
Классическое применение
- Интеграция сторонних библиотек под собственный интерфейс
- Переход на новую версию API без изменения клиентского кода
- Тестирование: MockAdapter вместо реального сервиса