> В чем разница между фабрикой и обычным конструктором (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Wildberries
Стек: Go
> Пример ответа
Основное различие между фабрикой и обычным конструктором в Go - в уровне абстракции и контроле над созданием объекта.
Обычный конструктор (например, NewUser(name string) *User) - это простая функция, которая возвращает экземпляр структуры. Он подходит, когда логика создания тривиальна: выделение памяти, инициализация полей, базовая валидация. В Go нет встроенных конструкторов, поэтому такие функции - стандартный паттерн.
Фабрика (Factory) - это более сложный паттерн, который решает задачи, непосильные для простого конструктора:
- Выбор реализации: фабрика может возвращать разные типы, удовлетворяющие общему интерфейсу, в зависимости от входных параметров (например,
NewParser("json")вернётJSONParser, аNewParser("xml")-XMLParser). - Сокрытие сложной логики: создание объекта может требовать настройки зависимостей, подключения к БД, чтения конфигурации - фабрика инкапсулирует этот процесс.
- Управление пулом объектов: фабрика может возвращать уже существующие объекты (например, из пула соединений) вместо создания новых.
- Тестирование: фабрику легко замокать, подменив возвращаемый тип.
Пример в Go:
GO// Простой конструкторfunc NewLogger(level string) *Logger {return &Logger{level: level}}// Фабрика с интерфейсомtype Logger interface {Log(msg string)}func NewLoggerFactory(level string) Logger {switch level {case "debug":return &DebugLogger{}case "prod":return &ProdLogger{}default:return &DefaultLogger{}}}
Итог: используйте конструктор для простых случаев, фабрику - когда нужно динамическое создание, сокрытие сложности или полиморфизм.
> Похожие задачи по Go
Что такое поды в Kubernetes
Почему в Go нельзя взять значение по ссылке из мапы
Какие группы паттернов проектирования существуют
Для чего нужен брокер сообщений Kafka
> Похожие задачи по backend
Что такое поды в Kubernetes
Почему в Go нельзя взять значение по ссылке из мапы
Какие группы паттернов проектирования существуют
Для чего нужен брокер сообщений Kafka
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью