Info
Відкрити сторінку на телефоні
Теги: #patterns #GoF patterns #structural patterns

Adapter (Адаптер)

Паттерн "Адаптер" (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` через новий інтерфейс.