🟡 Средний · 2 очк. Паттерны проектирования
В чём суть Clean Architecture и Hexagonal Architecture (Ports and Adapters)?
A Разделение кода по файлам
B Домен в центре, зависимости направлены внутрь; внешний мир подключается через интерфейсы (порты) и адаптеры
C Все слои зависят от базы данных
D HTTP-фреймворк определяет структуру приложения
Объяснение вопроса

Оба подхода разделяют одну идею: бизнес-логика не зависит от инфраструктуры.

Clean Architecture

Слои: Entities -> Use Cases -> Interface Adapters -> Frameworks. Зависимости строго внутрь: use case определяет интерфейс репозитория, а не импортирует пакет PostgreSQL.

Hexagonal (Ports and Adapters)

Ядро приложения окружено портами (интерфейсы) и адаптерами (реализации). Входящие порты: HTTP handler, gRPC, CLI. Исходящие порты: репозиторий, email-сервис. Адаптеры подключаются снаружи.

// Порт (интерфейс в домене)
type OrderRepository interface {
    Save(ctx context.Context, o *Order) error
}
// Адаптер (реализация в инфраструктуре)
type PgOrderRepo struct { pool *pgxpool.Pool }
func (r *PgOrderRepo) Save(ctx context.Context, o *Order) error { ... }

В Go это реализуется через пакеты: domain (сущности + интерфейсы), usecase (бизнес-логика), adapters/http, adapters/postgres. Тестирование домена с моками, без реальной БД.

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