Назад к вопросам
Senior
3
Знакомы ли вы с Hexagonal Architecture? Расскажите о её структуре.
Компании, где спрашивали
ИП Ганус Александр Андреевич
Ответ от нейросети
sobes.tech AI
Hexagonal Architecture, или Порт и Адаптеры, — это архитектурный стиль, который разделяет приложение на ядро и внешние интерфейсы. В центре находится бизнес-логика (домен), которая не зависит от внешних систем, таких как базы данных, UI или внешние сервисы.
Структура включает:
- Домен (ядро) — содержит бизнес-правила и логику.
- Порты — интерфейсы, через которые ядро взаимодействует с внешним миром (например, репозитории, сервисы).
- Адаптеры — реализации портов для конкретных технологий (БД, веб, UI).
Это позволяет легко менять внешние компоненты без изменения бизнес-логики, улучшает тестируемость и поддерживаемость.
Пример на Go:
// Порт
type UserRepository interface {
GetUser(id string) (*User, error)
}
// Домен
func GetUserName(repo UserRepository, id string) (string, error) {
user, err := repo.GetUser(id)
if err != nil {
return "", err
}
return user.Name, nil
}
// Адаптер
type InMemoryUserRepo struct {
users map[string]*User
}
func (r *InMemoryUserRepo) GetUser(id string) (*User, error) {
user, ok := r.users[id]
if !ok {
return nil, errors.New("user not found")
}
return user, nil
}
Такой подход изолирует бизнес-логику от деталей реализации.