Вопрос проверяет понимание одного из базовых порождающих паттернов и его назначения.
Factory Method — это паттерн, который выносит логику создания объектов в отдельный метод. Вместо прямого вызова конструктора используется фабричный метод. Это позволяет выбирать конкретную реализацию во время выполнения. Паттерн снижает связность и упрощает расширение кода.
Factory Method используется, когда создание объекта становится сложным или зависит от условий.
Factory Method — порождающий паттерн, который определяет интерфейс создания объекта, позволяя подклассам выбирать конкретную реализацию.
Без фабрики:
код зависит от конкретных классов;
сложно добавлять новые типы;
логика создания размазана по проекту.
Пример проблемы:
if payment_type == "card":
service = CardPayment()
elif payment_type == "cash":
service = CashPayment()
class PaymentFactory:
@staticmethod
def create(payment_type: str):
if payment_type == "card":
return CardPayment()
if payment_type == "cash":
return CashPayment()
raise ValueError("Unknown payment type")
Использование:
service = PaymentFactory.create("card")
service.pay(100)
Factory Method полезен, когда:
тип объекта определяется во время выполнения;
ожидается рост числа реализаций;
важно изолировать логику создания.
Factory Method упрощает создание объектов и снижает зависимость от конкретных классов. Он делает код более расширяемым и поддерживаемым.