Sobes.tech
Назад к вопросам
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
}

Такой подход изолирует бизнес-логику от деталей реализации.