Skip to content

Latest commit

 

History

History
49 lines (37 loc) · 3.03 KB

0-intro.md

File metadata and controls

49 lines (37 loc) · 3.03 KB

Проект

Будем разработать приложение для публикации текстов. Приложение реализует следующие сценарии(usecases):

  • регистрация пользователя
  • вход в систему
  • выход из системы
  • создание поста
  • редактирование поста
  • отображение поста
  • отображение списка всех постов

Информация:

Проект структурно разбит на подпроекты. Каждый подпроект - clojure проект с собственными зависимостями, управляемыми с помощью tools.deps.

Core

В текущем разделе мы реализуем продпроект core. Он будет содержать всю логику нашего приложения. Остальные подрпроекты будут зависеть от core, например, web - доставит приложение пользователю с помощью web технологий, а persistence - реализует работу с базой данных.

Реализуется это с помощью абстракций. core объявляет абстаркцию и примитивную реализацию для отладки. Остальные подпроекты содержат промышленную реализацию этих абстракций.

core должен быть написан максимально качественно, ведь это и есть ваше приложение. Для остальных подпроектов планку качества можно опустить.

Согласно терминологии Clean Architecture логика приложения разделена между слоями Entities и UseCases. Для удобства разработки core содержит оба этих слоя. В зависимости от размера команды, наличия общей предметной области в разных проектах, может быть будет иметь смысл каждый слой оформить в виде подпроекта.

Термины DDD и Clean Architecture имеют пересечение. DDD оперирует понятем Entity - единица предметной области, а в Clean Architecture Entity - основной слой приложения. Поэтому основной слой приложения будет называться domain и содержать entities, services, value-objects. Следующий слой будет называться use-cases.

Исходники подпроекта: https://github.com/darkleaf/publicator/tree/master/core