Sobes.tech
Назад к вопросам
Senior
11

Расскажи про чистую архитектуру и луковую архитектуру

Компании, где спрашивали
Итрея

Ответ от нейросети

sobes.tech AI

Чистая архитектура (Clean Architecture) — это подход к проектированию программного обеспечения, который разделяет систему на слои с чёткими зависимостями, направленными внутрь. Основная идея — отделить бизнес-логику от деталей реализации (UI, базы данных, внешних сервисов).

Основные слои:

  • Entities (сущности) — бизнес-правила
  • Use Cases (прецеденты) — бизнес-логика приложения
  • Interface Adapters — адаптеры для UI, БД, внешних API
  • Frameworks & Drivers — внешние детали (UI, БД, веб)

Зависимости направлены от внешних слоёв к внутренним, что облегчает тестирование и поддержку.

Луковая архитектура (Onion Architecture) очень близка по идее к чистой архитектуре. Она тоже строится слоями, напоминающими луковицу, где внутренние слои — ядро бизнес-логики, а внешние — инфраструктура и UI. Важный принцип — зависимости направлены внутрь, а внешние слои могут зависеть от внутренних, но не наоборот.

Пример на Go:

// Внутренний слой: бизнес-логика
package entity

type User struct {
    ID   int
    Name string
}

// Use case
package usecase

import "yourapp/entity"

type UserRepository interface {
    GetUser(id int) (*entity.User, error)
}

func GetUserName(repo UserRepository, id int) (string, error) {
    user, err := repo.GetUser(id)
    if err != nil {
        return "", err
    }
    return user.Name, nil
}

Здесь usecase зависит от entity и интерфейса репозитория, но не от конкретной реализации БД.

Таким образом, обе архитектуры направлены на создание гибких, легко тестируемых и поддерживаемых систем за счёт разделения ответственности и контроля зависимостей.