Мені було запропоновано деякий код Java, який імітує гонку автомобілів, яка включає реалізацію базової машини. Це не класична державна машина інформатики, а просто об'єкт, який може мати декілька станів і може перемикатися між своїми станами на основі ряду обчислень.
Щоб описувати лише проблему, у мене є клас Car, з вкладеним enum класом, який визначає деякі константи стану автомобіля (наприклад, OFF, IDLE, DRIVE, REVERSE тощо). У цьому ж класі автомобілів у мене є функція оновлення, яка в основному складається з великої заяви вимикача, яка вмикає поточний стан автомобілів, робить деякі розрахунки, а потім змінює стан автомобілів.
Наскільки я бачу, стан "Автомобілі" використовується лише в межах власного класу.
Моє запитання: чи це найкращий спосіб впоратися із впровадженням державної машини описаного вище характеру? Це звучить як найбільш очевидне рішення, але в минулому я завжди чув, що "заяви переключення погані".
Основна проблема, яку я бачу тут, полягає в тому, що оператор перемикання, можливо, може стати дуже великим, оскільки ми додамо більше станів (якщо це вважатиметься необхідним) і код може стати непростим і важким у обслуговуванні.
Що було б кращим рішенням цієї проблеми?
object.state = object.function(object.state);