Уведомления
Очистить
☰ МЕНЮ

PHP Паттерн “Адаптер” (Adapter)

Преобразует интерфейсы одного класса в интерфейсы другого, чтобы их можно было использовать вместе.

interface Engine {
    function start();
    function stop();
}

class Car implements Engine {
    function start() {
        echo "Car started\n";
    }

    function stop() {
        echo "Car stopped\n";
    }
}

class Bike implements Engine {
    function start() {
        echo "Bike started\n";
    }

    function stop() {
        echo "Bike stopped\n";
    }
}

class VehicleAdapter {
    private $_engine;

    public function setEngine(Engine $engine) {
        $this->_engine = $engine;
    }

    public function startEngine() {
        $this->_engine->start();
    }

    public function stopEngine() {
        $this->_engine->stop();
    }
}

$car = new Car();
$bike = new Bike();

$vehicleAdapter = new VehicleAdapter();
$vehicleAdapter->setEngine($car);
$vehicleAdapter->startEngine();

Паттерн «Адаптер» может быть полезен, когда нужно взаимодействовать с несовместимым классом или интерфейсом. Например, если вы имеете класс или библиотеку, которые не были написаны с учетом обратной совместимости, адаптер может помочь вам использовать их вместе.

Кроме того, адаптер может использоваться для преобразования между разными форматами данных или протоколами связи. Например, если у вас есть класс, который работает с файлами определенного формата, но вам нужно работать с файлами другого формата, вы можете использовать адаптер для преобразования данных между форматами.

Примеры использования паттерна «Адаптер»:

Адаптер может использоваться для подключения устройства с устаревшим интерфейсом к современной системе. Например, если у нас есть устройство, которое имеет устаревший интерфейс USB, но нам нужно подключить его к компьютеру с современным разъемом USB-C, мы можем использовать адаптер для преобразования интерфейсов.

Адаптеры могут использоваться для преобразования протоколов данных. Например, если нам нужно прочитать данные из файла, который имеет формат, отличный от того, который поддерживает наша программа, мы можем использовать адаптер для конвертации данных в нужный формат.

Адаптеры могут использоваться для взаимодействия с системами, которые используют разные типы баз данных. Например, если наша программа использует базу данных MySQL, но нам нужно подключиться к базе данных Oracle, мы можем использовать адаптер для конвертации запросов к базе данных.

Это только некоторые примеры использования паттерна «Адаптер». В реальной жизни этот паттерн используется очень часто, особенно в области разработки программного обеспечения.