Вопрос проверяет знание порождающих паттернов и умение отделять создание объектов от их использования.
Паттерн «Фабрика» отвечает за создание объектов и скрывает детали их инициализации. Клиентский код не знает, какой именно класс создаётся. Вместо этого он работает с абстракцией. Это уменьшает связанность и упрощает расширение системы. Фабрика часто используется вместе с протоколами.
Паттерн «Фабрика» применяется, когда создание объекта становится отдельной задачей.
Factory — порождающий паттерн, который инкапсулирует логику создания объектов.
Без фабрики:
код зависит от конкретных классов
создание объектов размазывается по проекту
сложно добавлять новые типы
protocol PaymentService {
func pay()
}
class PaymentFactory {
static func makeService() -> PaymentService {
// логика выбора реализации
return CardPaymentService()
}
}
создание ViewController
конфигурация сервисов
сборка модулей (VIPER, MVVM)
Фабрика позволяет централизовать создание объектов и снизить связанность. Она особенно полезна в архитектурных слоях и сборке модулей.