В этом проекте создано 2 ветки.
В первой ветке productmanager была проделана следующая работа:
- Разработан базовый класс Product.
- Разработаны два унаследованных от Product класса: Book (с полями название и автор) и Smartphone (с полями название и производитель)
- Разработан репозиторий, позволяющий сохранять Product'ы, получать все сохранённые Product'ы и удалять по id
- Разработан менеджер, который добавляет Product'ы в репозиторий и осуществлять поиск по ним.
В ветке richmodel была проделана следующая работа:
- За основу взят предыдущий код.
- В классе Product реализован метод public boolean matches(String search), который определяет, подходит ли продукт поисковому запросу исходя из названия.
- Переопределите этот метод в дочерних классах, чтобы они сначала вызывали родительский метод и только если родительский метод вернул false, тогда проводили доп.проверки (Book - по автору, Smartphone - по производителю).
- Из менеджера удалены все instanceof и метод matches.
- Добавлены unit-тесты на методы умных моделей
Ко всему проекту:
- Подключен плагин Surefire так, чтобы сборка падала в случае отсутсвия тестов
- Подключен плагин JaCoCo в режиме генерации отчётов
- Написаны автотесты на методы
- Подключен CI на базе Github Actions