Подобрать паттерны программирования
Всем привет! Хочу попробовать реализовать паттерны программирования, преподаватель дал такие задания:
- Есть магазин. В нём есть товары, заказы, корзина, пользователи.
- В корзине может быть сколько угодно товаров, в заказе тоже. При чекауте корзина становится заказом.
- В заказ и корзину нельзя положить товар, у которого кол-во ниже 0.
- К корзине и заказу привязывается пользователь.
- У заказа есть служба доставки
- К заказу могут быть применены разные скидки: процентная, скидка на доставку, бесплатный товар (самый дешёвый в корзине)
- При рендеринге страницы любой из сущности надо навешивать хуки вызова.
Нужно реализовать паттерны:
- Абстрактная фабрика
- Адаптер
- Инверсия зависимости
- Фабричный метод
- Наблюдатель
Не знаю с чего начать, думаю первое стоит определиться для какой задачи какой паттерн применить? Может кто-то их уже реализовывал и знает для какой задачи какой паттерн использовать?