나는 자동차 경주를 시뮬레이트하는 기본 코드 머신의 구현을 포함하는 Java 코드를 받았다. 이것은 고전적인 컴퓨터 과학 상태 머신이 아니라 여러 상태를 가질 수 있고 일련의 계산을 기반으로 상태를 전환 할 수있는 객체 일뿐입니다.
문제를 설명하기 위해 자동차 상태에 대한 일부 상수 (예 : OFF, IDLE, DRIVE, REVERSE 등)를 정의하는 중첩 열거 형 클래스가있는 Car 클래스가 있습니다. 이 같은 Car 클래스에는 기본적으로 자동차의 현재 상태를 켜고 계산을 한 다음 자동차 상태를 변경하는 큰 스위치 문으로 구성된 업데이트 기능이 있습니다.
내가 볼 수있는 한, Cars 상태는 자체 클래스 내에서만 사용됩니다.
내 질문은, 이것이 위에서 설명한 자연 상태 머신의 구현을 처리하는 가장 좋은 방법입니까? 가장 확실한 해결책처럼 들리지만 과거에는 항상 "스위치 설명이 잘못되었다"고 들었습니다.
여기서 볼 수있는 주요 문제는 상태를 추가 할 때 (필요한 경우) switch 문이 매우 커져 코드가 다루기 어려워 유지 관리하기 어려울 수 있다는 것입니다.
이 문제에 대한 더 나은 해결책은 무엇입니까?
object.state = object.function(object.state);