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

PHP Паттерн “Фабричный метод” (Factory Method)

Позволяет определить интерфейс для создания объектов, но оставляет подклассам решение о том, какой класс создавать.

interface Camera {
    function takePicture();
}

class MobilePhone {
    function makeCall() {

    }
}

abstract class CameraPhone implements Camera, MobilePhone {
    abstract protected function _buildCamera();
    abstract protected function _buildMobilePhone();

    function Camera() {
        $this->_camera = $this->_buildCamera();
    }

    function MobilePhone() {
        $this->_mobilePhone = $this->_buildMobilePhone();
    }

    function takePicture() {
        echo "Camera is taking picture\n";
    }

    function makeCall() {
        echo "Phone is making call\n";
    }
}

class CameraPhoneNexusS implements CameraPhone {
    protected function _buildCamera() {
        return new Camera();
    }

    protected function _buildMobilePhone() {
        return new MobilePhone();
    }
}

class CameraPhoneNokiaC3D implements CameraPhone {
    protected function _buildCamera() {
        return new Camera();
    }

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

Создание различных объектов: Фабричный метод позволяет создавать объекты различных типов, определяя общий интерфейс для создания объектов и предоставляя конкретные реализации для каждого типа.

Работа с базами данных: Фабричный метод может быть использован для создания различных соединений с базами данных, определяя общую логику работы с базой данных и предоставляя реализации для конкретных типов баз данных.

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

Обработка ошибок: Фабричный метод может обрабатывать различные типы ошибок, определяя общий интерфейс обработки ошибок и предоставляя специфические реализации для разных видов ошибок.

Работа с HTTP запросами: Фабричный метод может создавать различные HTTP-клиенты, определяя общий интерфейс работы с HTTP и предоставляя реализации для разных протоколов и транспортных сред.