Sobes.tech
Junior — Middle

Обяснете принципа на работа и предназначението на патърна 'фабрика' в обектно-ориентираното програмиране.

sobes.tech AI

Отговор от AI

Моделът «Фабрика» (Factory) се използва за създаване на обекти без да се указва конкретният клас на създавания обект. Основната му цел е да инкапсулира логиката за създаване на обекти, което улеснява разширяването и поддръжката на кода.

Принцип на работа:

  • Клиентът се обръща към фабричен метод или клас, който връща обект от интерфейс или базов клас.
  • Фабриката решава кой конкретен клас да създаде, скривайки детайлите от клиента.

Пример на C#:

// Интерфейс на продукта
interface IAnimal {
    void Speak();
}

// Конкретни продукти
class Dog : IAnimal {
    public void Speak() => Console.WriteLine("Гав");
}
class Cat : IAnimal {
    public void Speak() => Console.WriteLine("Мяу");
}

// Фабрика
class AnimalFactory {
    public static IAnimal CreateAnimal(string type) {
        return type switch {
            "dog" => new Dog(),
            "cat" => new Cat(),
            _ => throw new ArgumentException("Неизвестен тип животно")
        };
    }
}

// Използване
var animal = AnimalFactory.CreateAnimal("dog");
animal.Speak(); // Ще изведе "Гав"

Този подход улеснява добавянето на нови типове обекти без промяна на клиентския код.