Реаллизовал проект по принципам SOLID, использовал паттерн "Стратегия"