Входные данные: Список товаров корзины через запятую
Выходные данные: Кассовый чек с рассчитаной промежуточной и итоговой стоимостью
Хранилище данных: JSON строка с информацией о стоимости товаров и действующих скидках
Примененные паттрены: Цепочка обязанностей (Chain Of Responsibility), Фабрика
Цель применения: Рассчет скидок для потребительской корзины
Реализация: Для каждого скидочного предложения создается его отображение в виде объекта с помощью фабрики DiscountHandlerFactory Затем, создается цепочка этих объектов, каждое звено которой проверяет, есть ли в поступившей корзине скидочные продукты и,если необходимо рассчитывает скидку. В противном случае, передает управление следующему звену цепи. Таким образом реализован паттерн Цепочка обязанностей.
Как запустить/использовать: В архиве в папке ShoppingCartHandlerBuild лежит уже собранный проект, советую использовать его:
- Настроить(при необходимости) конфигурационный файл во вложенной папке Setup.
- Из папки с необходимо запустить терминал.
- С помощью терминала запустить ShoppingCartHandler.exe с аргументами - товарами пользовательской корзины Например: .\ShoppingCartHandler.exe Cake, Cake, Bread, Bread, Apple, Apple, Apple
- В папке Bill сохранится расситанный чек.
Если все же необходимо собрать проект вручную:
- Необходимо собрать проект в VisualStudio ( https://imgur.com/a/oGZMNpJ )
- Во время сборки программа выдаст ошибку о пустом конфигурационном файле. Её необходимо пропустить. ( https://imgur.com/a/KS8NBy8 )
- В папке с собранным проектом (ShoppingCart\bin\Debug\netcoreapp3.1) или (ShoppingCart\bin\Release\netcoreapp3.1) необходимо сконфигурировать JSON файл в папке Setup (ну или просто закинуть туда готовый из папки Test в архиве)
- Profit. Переходим к иструкции выше.