Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: Clean Architecture, layers, dependency inversion, separation of concerns, domain, application

Сколько слоёв обычно выделяют в чистой архитектуре и что в них входит?

Вопрос проверяет понимание принципов чистой архитектуры (Clean Architecture) и умение выделять её основные слои.

Короткий ответ

В чистой архитектуре обычно выделяют четыре основных слоя: сущности (Entities), варианты использования (Use Cases), адаптеры интерфейсов (Interface Adapters) и фреймворки/драйверы (Frameworks & Drivers). Внутренний слой — сущности, содержат бизнес-логику. Внешние слои — детали реализации, такие как базы данных и UI. Зависимости направлены внутрь: внешние слои зависят от внутренних, но не наоборот.

Длинный ответ

Основные слои чистой архитектуры

Чистая архитектура (Clean Architecture), предложенная Робертом Мартином, делит систему на четыре основных слоя, каждый из которых имеет свою ответственность. Главный принцип — зависимость направлена внутрь: внешние слои зависят от внутренних, а не наоборот. Это достигается через инверсию зависимостей.

Слои и их содержимое

  • Сущности (Entities) — самый внутренний слой. Содержит бизнес-правила предприятия, независимые от приложения. Например, класс Order с методами расчета суммы.
  • Варианты использования (Use Cases) — слой, описывающий сценарии работы приложения. Здесь реализуется логика, специфичная для приложения, например, создание заказа. Зависит только от сущностей.
  • Адаптеры интерфейсов (Interface Adapters) — преобразуют данные между форматом, удобным для use cases, и форматом внешних систем (базы данных, UI). Пример: контроллеры, репозитории.
  • Фреймворки и драйверы (Frameworks & Drivers) — внешний слой, содержащий конкретные реализации: базы данных, веб-фреймворки, UI. Здесь минимум логики.

Пример кода

// Слой сущностей
class Order {
  constructor(items) {
    this.items = items;
  }
  getTotal() {
    return this.items.reduce((sum, item) => sum + item.price, 0);
  }
}

// Слой use case
class CreateOrderUseCase {
  constructor(orderRepository) {
    this.orderRepository = orderRepository;
  }
  execute(items) {
    const order = new Order(items);
    return this.orderRepository.save(order);
  }
}

// Слой адаптеров
class OrderRepository {
  save(order) {
    // сохраняет в БД
  }
}

В этом примере CreateOrderUseCase зависит от абстракции OrderRepository, а не от конкретной базы данных. Это позволяет легко заменять хранилище.

Вывод

Чистая архитектура помогает создавать системы, устойчивые к изменениям фреймворков и внешних сервисов. Её стоит применять в сложных проектах с долгосрочной поддержкой, где важна тестируемость и независимость бизнес-логики.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

  • Node.js

    Node.js

Ключевые слова

#Clean Architecture

#layers

#dependency inversion

#separation of concerns

#domain

#application

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.