🟢 Лёгкий · 1 очк. Паттерны проектирования
Что такое многослойная (layered) архитектура и как она выглядит в Go-приложении?
A Все в одном файле main.go
B Разделение на слои: представление (handler) -> бизнес-логика (service) -> доступ к данным (repository)
C Один пакет на весь проект
D Многослойная архитектура применима только к Java
Объяснение вопроса

Многослойная (layered) архитектура - классический подход к организации кода с разделением на горизонтальные слои.

Типичные слои

  • Presentation (handler/controller): HTTP-обработчики, парсинг запросов, формирование ответов
  • Business Logic (service/usecase): бизнес-правила, валидация, оркестрация
  • Data Access (repository/store): SQL-запросы, работа с БД и внешними хранилищами

Пример в Go

// repository
type UserRepo struct { db *pgxpool.Pool }
func (r *UserRepo) GetByID(ctx context.Context, id int64) (*User, error) { ... }

// service
type UserService struct { repo *UserRepo }
func (s *UserService) Register(ctx context.Context, req RegisterReq) error { ... }

// handler
type UserHandler struct { svc *UserService }
func (h *UserHandler) HandleRegister(w http.ResponseWriter, r *http.Request) { ... }

Зависимости идут сверху вниз: handler -> service -> repository. Нижний слой не знает о верхнем. Прост для понимания, хорошо подходит для небольших и средних проектов.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.