Каким образом Абстрактная Фабрика определяет, какую конкретную реализацию использовать?

Абстрактная Фабрика определяет, какую конкретную реализацию использовать, обычно через создание набора связанных объектов без указания их конкретных классов.

Короткий ответ

Что ответить на собеседовании

Абстрактная Фабрика определяет, какую конкретную реализацию использовать, обычно через создание набора связанных объектов без указания их конкретных классов. Это достигается за счёт того, что клиент работает с интерфейсами или абстрактными классами, а конкретная фабрика реализует эти интерфейсы и возвращает конкретные объекты.

Подробный разбор

Ответ с пояснениями

Абстрактная Фабрика определяет, какую конкретную реализацию использовать, обычно через создание набора связанных объектов без указания их конкретных классов. Это достигается за счёт того, что клиент работает с интерфейсами или абстрактными классами, а конкретная фабрика реализует эти интерфейсы и возвращает конкретные объекты.

Чаще всего выбор конкретной реализации происходит на этапе создания конкретной фабрики, например, через параметр конфигурации, условие или инъекцию зависимостей. Таким образом, клиентский код не меняется, а конкретная фабрика решает, какие классы создавать.

Пример на Python:

from abc import ABC, abstractmethod

class Button(ABC):
    @abstractmethod
    def paint(self):
        pass

class WinButton(Button):
    def paint(self):
        print("Рисуем кнопку Windows")

class MacButton(Button):
    def paint(self):
        print("Рисуем кнопку Mac")

class GUIFactory(ABC):
    @abstractmethod
    def create_button(self) -> Button:
        pass

class WinFactory(GUIFactory):
    def create_button(self) -> Button:
        return WinButton()

class MacFactory(GUIFactory):
    def create_button(self) -> Button:
        return MacButton()

# Выбор конкретной фабрики
config = "Windows"

if config == "Windows":
    factory = WinFactory()
else:
    factory = MacFactory()

button = factory.create_button()
button.paint()

Здесь выбор конкретной реализации происходит через условие, которое определяет, какую фабрику использовать.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее