Sobes.tech
Back to questions
Junior — Middle
64

Можете объяснить принцип работы и структуру паттерна Abstract Factory?

Answer from AI

sobes.tech AI

Паттерн Abstract Factory предназначен для создания семейств связанных объектов без указания их конкретных классов.

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

  • Определяется интерфейс или абстрактный класс фабрики, который объявляет методы для создания различных продуктов.
  • Конкретные фабрики реализуют этот интерфейс и создают конкретные продукты, принадлежащие одному семейству.
  • Клиент работает с фабрикой через абстрактный интерфейс и не зависит от конкретных классов создаваемых объектов.

Структура:

  • AbstractFactory — интерфейс с методами создания продуктов.
  • ConcreteFactory — конкретная фабрика, реализующая AbstractFactory.
  • AbstractProduct — интерфейс для продуктов.
  • ConcreteProduct — конкретные продукты, создаваемые фабрикой.

Пример на Java:

interface GUIFactory {
    Button createButton();
    Checkbox createCheckbox();
}

class WinFactory implements GUIFactory {
    public Button createButton() { return new WinButton(); }
    public Checkbox createCheckbox() { return new WinCheckbox(); }
}

class MacFactory implements GUIFactory {
    public Button createButton() { return new MacButton(); }
    public Checkbox createCheckbox() { return new MacCheckbox(); }
}

// Клиент
class Application {
    private Button button;
    private Checkbox checkbox;

    public Application(GUIFactory factory) {
        button = factory.createButton();
        checkbox = factory.createCheckbox();
    }
}

Такой подход упрощает замену семейств продуктов и поддерживает расширяемость.