상태 패턴(State Pattern)은 객체의 내부 상태가 바뀔 때, 객체의 행동(메서드 결과)도 함께 바뀌도록 하는 패턴입니다. 전략 패턴과 구조가 거의 같지만, 목적이 다릅니다.
전자레인지를 생각해봅시다. '정지 상태'에서 시작 버튼을 누르면 가열이 되지만, 이미 '가동 상태'에서 시작 버튼을 누르면 아무 일도 안 하거나 시간이 연장됩니다. 즉, 상태에 따라 if-else 지옥을 만드는 대신 상태 자체를 클래스로 분리하여 캡슐화합니다.
📐 State Pattern UML
객체의 내부 상태가 바뀔 때 객체의 동작도 함께 바뀌도록 상태를 클래스로 분리하여 위임합니다.