Встречается на собеседованиях • сегодня
За счет чего Абстрактная Фабрика понимает, с какой реализацией работать
Абстрактная фабрика делегирует создание конкретных объектов своим подклассам (конкретным фабрикам). Клиентский код работает только с интерфейсом абстрактной фабрики, а выбор конкретной реализации определяется:
- Через параметр при создании фабрики
- Через конфигурацию (например, из файла)
- Через условия в 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"
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы