Встречается на собеседованиях • сегодня

За счет чего Абстрактная Фабрика понимает, с какой реализацией работать

Абстрактная фабрика делегирует создание конкретных объектов своим подклассам (конкретным фабрикам). Клиентский код работает только с интерфейсом абстрактной фабрики, а выбор конкретной реализации определяется:

  1. Через параметр при создании фабрики
  2. Через конфигурацию (например, из файла)
  3. Через условия в runtime

Пример:

python
from abc import ABC, abstractmethod

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

class WinButton(Button):
    def render(self): return "Windows button"

class MacButton(Button):
    def render(self): return "MacOS button"

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

class WinFactory(GUIFactory):
    def create_button(self): return WinButton()

class MacFactory(GUIFactory):
    def create_button(self): return MacButton()

# Выбор фабрики в runtime
def get_factory(os_type):
    if os_type == "windows":
        return WinFactory()
    return MacFactory()

# Клиентский код
factory = get_factory("mac")
button = factory.create_button()
print(button.render())  # "MacOS button"
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы