Заметки WEB-разработчика

Полезные материалы для web-разработки

Паттерн Factory (фабрика)

Объяснение ООП паттерна Factory за 2 минуты.

Шаблон Фабрика позволяет создавать объекты во время работы программы. Этот шаблон называется Фабрикой потому, что он отвечает за производство объекта. Параметризированная фабрика принимает в качестве аргумента имя класса, объект которого создается.

Описание метафорой

Суть паттерна практически полностью описывается его названием. Когда вам требуется получать какие-то объекты, например пакеты сока, вам совершенно не нужно знать как их делают на фабрике. Вы просто говорите «сделайте мне пакет апельсинового сока», а «фабрика» возвращает вам требуемый пакет. Как? Всё это решает сама фабрика, например «копирует» уже существующий эталон. Основное предназначение «фабрики» в том, чтобы можно было при необходимости изменять процесс «появления» пакета сока, а самому потребителю ничего об этом не нужно было сообщать, чтобы он запрашивал его как и прежде. Как правило, одна фабрика занимается «производством» только одного рода «продуктов». Не рекомендуется «фабрику соков» создавать с учетом производства автомобильных покрышек. Как и в жизни, паттерн «фабрика» часто создается «одиночкой».

Примитивный пример

interface IFactory{
    public static function create($class);
}

class Factory implements IFactory{
    public static function create($class){
        if (include_once 'Drivers/' . $class . '.php') {
            $classname = 'Driver_' . $class;
            return new $classname;
        } else {
            throw new Exception('Класс не найден');
        }
    }
}

$mysql = Factory::create('MySQL');
$sqlite = Factory::create('SQLite');

Комментарии

Комментарии через Вконтакте