Мне дали посмотреть на Java-код, который имитирует гонку автомобиля, включая реализацию базового автомата. Это не классическая машина состояний компьютерных наук, а просто объект, который может иметь несколько состояний и может переключаться между его состояниями на основе серии вычислений.
Чтобы описать только проблему, у меня есть класс Car с вложенным классом enum, который определяет некоторые константы для состояния Car (например, OFF, IDLE, DRIVE, REVERSE и т. Д.). В этом же классе автомобилей у меня есть функция обновления, которая в основном состоит из большого оператора switch, который включает текущее состояние автомобилей, выполняет некоторые вычисления и затем изменяет состояние автомобилей.
Насколько я вижу, состояние Cars используется только в своем классе.
Мой вопрос заключается в том, является ли это лучшим способом реализации конечного автомата природы, описанного выше? Это звучит как наиболее очевидное решение, но в прошлом я всегда слышал, что «операторы переключения плохие».
Основная проблема, которую я вижу здесь, заключается в том, что оператор switch может стать очень большим, если мы добавим больше состояний (если это будет сочтено необходимым), а код станет громоздким и сложным в обслуживании.
Что было бы лучшим решением этой проблемы?
object.state = object.function(object.state);