Паттерн "Адаптер" (Adapter) в програмуванні - це шаблон проектування, що входить до категорії структурних паттернів. Його основна мета - дозволити об'єктам з несумісними інтерфейсами співпрацювати один з одним. Цей паттерн застосовується, коли потрібно взаємодіяти між класами з різними інтерфейсами, і змінити ці інтерфейси прямим чином неможливо, але є необхідність у взаємодії між ними.
На прикладі PHP можна розглянути ситуацію, де є існуючий клас `OldClass` з методом `oldMethod`, і ми хочемо його використовувати в контексті, де очікується інший інтерфейс. Ми можемо використати паттерн "Адаптер" для створення класу-адаптера, який надасть необхідний інтерфейс та використовує функціонал `OldClass`.
Ось приклад:
// Існуючий клас з несумісним інтерфейсом
class OldClass {
public function oldMethod() {
return "Старий метод";
}
}
// Інтерфейс, який очікується в контексті
interface NewInterface {
public function newMethod();
}
// Клас-адаптер, який дозволяє використовувати OldClass в новому контексті
class Adapter implements NewInterface {
private $oldInstance;
public function __construct(OldClass $oldInstance) {
$this->oldInstance = $oldInstance;
}
public function newMethod() {
// Викликаємо метод oldMethod, адаптуючи його під новий інтерфейс
return $this->oldInstance->oldMethod();
}
}
// Використання класу-адаптера
$oldObj = new OldClass();
$adapter = new Adapter($oldObj);
$result = $adapter->newMethod();
echo $result; // Результат: "Старий метод"
У цьому прикладі `Adapter` створює місток між `OldClass` і `NewInterface`, дозволяючи використовувати функціонал `OldClass` через новий інтерфейс.