4. Слой бизнес логики - lezhenin/trucking-service GitHub Wiki

Проектирование

Для реализации бизнес логики был выбран шаблон проектирования "Модель предметной области". Классы соответствует объектам предметной области и отражают их состояние и поведение. Логика предментной области реализуется в виде методов классов. Данный подход позволяет описывать сложные модели и легко расширять их.

Для реализации доступа к данным был применен шаблон "Репозиторий". Репозиторий предоставляет интерфейс в виде коллекции для доступа к объектам предметной области, является посредником между слоем бизнес логики и слоем хранения данных.

Реализация

В соостветствии с представленной в разделе 3 диагрммой были созданы классы, описывающие объекты предметной области:

  • Order
  • Contract
  • Contractor
  • Manager
  • Client
  • Driver
  • Vehicle
  • Contracts

Классы Client, Driver, Vehicle являются ролевымы. Их методы соостветсвуют прецендентам использвоания. Методы ролевых объектов изменяют состояние объектов Order и Contract. Также в них выполняется проверка возможности совершения соответсвующего действия.

Для каждого класса предметной области, который является конечным в иерархии наследования, был создан интерфейс репозитирия и его реализация на основе списка (List).