В нашем примере вы могли заметить отсутствие какой-либо сущности, которая занималась бы доставкой заказа. Действительно, когда мы думаем о вендинговом аппарате, мы подразумеваем то, что физически весь товар размещен в каком-то хранилище и есть некая механическая система доставки.
Но в нашей реализации этого нет. Поэтому, мы смогли пойти на некоторые условности. Во-первых, ответственность об доставке товара мы отдали заказу. Во-вторых, доставка товара сводится к убавлению количества у определённого объекта.
Если бы разрабатывали чуть более расширенную систему, то у нас появилось бы два важных класса:
- GoodStorage;
- OrderDeliver;
Первый бы содержал в себе товары и их остаток, возможно с разбивкой по слотам, в которых они находятся. Второй занимался бы доставкой:
- Снимал бы деньги с баланса аппарата;
- Забирал товар с хранилища;
- Контролировал бы передачу клиенту;