4. Слой бизнес логики - lezhenin/trucking-service GitHub Wiki
Проектирование
Для реализации бизнес логики был выбран шаблон проектирования "Модель предметной области". Классы соответствует объектам предметной области и отражают их состояние и поведение. Логика предментной области реализуется в виде методов классов. Данный подход позволяет описывать сложные модели и легко расширять их.
Для реализации доступа к данным был применен шаблон "Репозиторий". Репозиторий предоставляет интерфейс в виде коллекции для доступа к объектам предметной области, является посредником между слоем бизнес логики и слоем хранения данных.
Реализация
В соостветствии с представленной в разделе 3 диагрммой были созданы классы, описывающие объекты предметной области:
Order
Contract
Contractor
Manager
Client
Driver
Vehicle
Contracts
Классы Client
, Driver
, Vehicle
являются ролевымы. Их методы соостветсвуют прецендентам использвоания. Методы ролевых объектов изменяют состояние объектов Order
и Contract
. Также в них выполняется проверка возможности совершения соответсвующего действия.
Для каждого класса предметной области, который является конечным в иерархии наследования, был создан интерфейс репозитирия и его реализация на основе списка (List
).