Sobes.tech
Back to questions
Junior — Middle
89

Какова основная задача паттерна 'Фабрика' в объектно-ориентированном программировании?

Answer from AI

sobes.tech AI

Паттерн «Фабрика» (Factory) в объектно-ориентированном программировании предназначен для создания объектов без указания конкретного класса создаваемого объекта. Его основная задача — инкапсулировать логику создания объектов, позволяя клиентскому коду работать с абстракциями, а не с конкретными реализациями. Это облегчает расширение и поддержку кода, так как при добавлении новых типов объектов не нужно менять клиентский код, достаточно расширить фабрику.

Пример на PHP:

interface Product {
    public function getName();
}

class ConcreteProductA implements Product {
    public function getName() {
        return "Product A";
    }
}

class ConcreteProductB implements Product {
    public function getName() {
        return "Product B";
    }
}

class Factory {
    public static function createProduct(string $type): Product {
        if ($type === 'A') {
            return new ConcreteProductA();
        } elseif ($type === 'B') {
            return new ConcreteProductB();
        }
        throw new Exception("Unknown product type");
    }
}

// Использование
$product = Factory::createProduct('A');
echo $product->getName(); // Product A