Этот модуль предназначен для фильтрации списка авиаперелетов и разработан в рамках тестового задания. Модуль демонстрирует использование объектно-ориентированных принципов и шаблонов проектирования для эффективной обработки и фильтрации данных согласно заданным критериям.
Flight: Класс, представляющий перелет, который включает в себя список сегментов.Segment: Класс, представляющий сегмент в рамках перелета, с информацией о времени вылета и прилета.FlightFilter: Интерфейс для фильтров, определяющих логику отбора перелетов.FlightBuilder: Утилита для создания тестовых данных (перелетов).
| Название | Описание |
|---|---|
| DepartureBeforeNowFilter | Фильтрует перелеты, в которых есть сегменты с вылетом до текущего момента времени. |
| ArrivalBeforeDepartureFilter | Фильтрует перелеты, в которых дата прилета любого сегмента раньше даты его вылета. |
| LongTransfersFilter | Фильтрует перелеты, где общее время, проведенное на земле, превышает два часа. |
Фильтры перелетов реализованы как набор стратегий, что позволяет легко добавлять новые виды фильтрации, не изменяя существующий код, а также динамически выбирать фильтры в рантайме.
Модуль разработан так, чтобы быть открытым для расширения (добавление новых фильтров), но закрытым для изменения (существующий код фильтров не требует модификации при добавлении новых фильтров).
Пример использования модуля можно найти в классе Main, где демонстрируется применение фильтров к списку тестовых перелетов.