Приклад
// Бібліотека логування зі своїм інтерфейсом
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 замість реального сервісу