Это модуль для фильтрации списка событий, разработанный в рамках тестового задания. Модуль демонстрирует применение объектно-ориентированных принципов и шаблонов проектирования для эффективной фильтрации данных в соответствии с заданными критериями.
- Event: Класс, представляющий событие, которое включает в себя список активностей.
- Activity: Класс, представляющий активность в рамках события, с информацией о времени начала и окончания.
- EventFilter: Интерфейс для фильтров, определяющих логику отсева событий.
- EventFilterService: Сервис для работы со списком событий.
- EventFilterContext: Класс для динамического формирования списка применяемых фильтров.
| Название | Описание |
|---|---|
| BeginInPastFilter | Исключает события, в которых хотя бы одна активность начинается до текущего момента времени |
| EndBeforeBeginFilter | Исключает события, в которых содержатся активности с временем окончания, установленным раньше времени начала |
| LongIntervalFilter | Исключает события, где общее время между активностями превышает заданный лимит (например, два часа) |
- Паттерн Стратегия (Strategy Pattern)
Фильтры полетов реализованы как набор стратегий, что позволяет легко добавлять новые виды фильтрации, не изменяя существующий код, а также динамически формировать список применяемых фильтров в рантайме.
- Принцип Открытости-закрытости (Open-Closed Principle)
Модуль разработан таким образом, чтобы быть открытым для расширения (например, добавление новых фильтров), но закрытым для изменения (существующий код фильтров не требует изменений при расширении).