Задача
Имеется некая система, которая обрабатывает авиаперелёты. Перелёт — это перевозка пассажира из одной точки в другую с возможными промежуточными посадками. Т. о. перелёт можно представить как набор из одного или нескольких элементарных перемещений, называемых сегментами.
Сегмент — это атомарная перевозка, которую для простоты будем характеризовать всего двумя атрибутами:
Написан небольшой модуль, который занимается фильтрацией набора перелётов согласно различным правилам. Правил фильтрации может быть очень много. Также наборы перелётов могут быть очень большими. Правила могут выбираться и задаваться динамически в зависимости от контекста выполнения операции фильтрации.
Создана некая структура модуля,имеются необходимые классы и интерфейсы. Код покрыт JUnit тестами.
Пользовательский интерфейс не рассматривается. Вывод информации в консоль. Никаких сторонних библиотек не используется.
Приложенный файл TestClasses.java содержит упрощённые модельные классы и фабрику для получения тестовых образцов. Весь код необходимо поместить в пакет com.gridnine.testing
Для проверочного запуска создан публичный класс Main c методом main() Этот метод выдает в консоль результаты обработки тестового набора перелётов. Получаем тестовый набор методом FlightBuilder.createFlights()
В main() содержится следующий проверочный код. Исключить из тестового набора перелёты по следующим правилам (по каждому правилу нужен отдельный вывод списка перелётов):