Skip to content

NemanjaSRB05/lab7-ddd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Лабораторная работа 7 — Слоистая архитектура и DDD-lite для оплаты заказа

Обзор

Проект реализует небольшую систему оплаты заказов с использованием слоистой архитектуры и DDD-lite принципов.
Демонстрируется разделение ответственности, доменное моделирование и управление бизнес-кейсами без подключения к реальной базе данных.

Архитектура

Проект разделён на четыре слоя:

  • domain (Домен) — бизнес-логика, сущности, value-объекты и инварианты
  • application (Приложение) — координирует работу use-case и выполняет бизнес-операции
  • infrastructure (Инфраструктура) — технические реализации интерфейсов (репозитории, платежный шлюз)
  • tests (Тесты) — проверка работы use-case и соблюдения правил домена без базы данных

Доменная модель

  • order (Заказ) — корень агрегата
  • order_line (Строка заказа) — часть агрегата
  • money (Деньги) — value-объект для суммы и валюты
  • order_status (Статус заказа) — перечисление возможных состояний

Все бизнес-правила (например, запрет оплаты пустого заказа и запрет изменения после оплаты) реализованы на уровне домена.

Use-case

pay_order_use_case выполняет следующие шаги:

  1. Получает заказ из репозитория
  2. Выполняет оплату на уровне домена
  3. Вызывает платежный шлюз
  4. Сохраняет обновлённый заказ
  5. Возвращает результат оплаты

Инфраструктура

  • in_memory_order_repository — хранение заказов в памяти для тестирования
  • fake_payment_gateway — имитация процесса оплаты без реальных транзакций

Тестирование

  • Все тесты выполняются без базы данных
  • Проверяют успешную оплату, запрет оплаты пустого или уже оплаченного заказа, запрет изменения после оплаты и корректность подсчёта итоговой суммы

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages