> Какие шаблоны проектирования часто используются (Go, Java)

Уровень: middle · Роль: backend · Категория: Технические вопросы

Компании: YADRO

Стек: Go, Java

> Пример ответа

В Go, в отличие от Java, нет классической ООП-иерархии, поэтому многие шаблоны реализуются через композицию и интерфейсы. Чаще всего используются:

  1. Функциональные опции (Functional Options) - замена билдеру и перегруженным конструкторам. Позволяет гибко настраивать объекты без множества сигнатур.
    Пример: NewServer(opts ...Option).

  2. Одиночка (Singleton) - через sync.Once для ленивой инициализации, особенно для конфигов или пулов соединений.

  3. Фабрика (Factory) - в Go часто заменяется простыми функциями-конструкторами, но при сложной логике создания объектов используется интерфейс Factory.

  4. Стратегия (Strategy) - через интерфейсы и передачу поведения как аргумента (например, сортировка с разными компараторами).

  5. Посетитель (Visitor) - реже, но полезен для обхода структур (например, AST) без изменения их кода.

В Java к этому добавляются Абстрактная фабрика, Декоратор (через обёртки), Наблюдатель (через event listeners) и Шаблонный метод (через абстрактные классы). Однако в Go из-за отсутствия наследования шаблонный метод реализуется через композицию и колбэки.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью