기술나눔

상태 패턴

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

상태 패턴

정의

상태 머신 패턴이라고도 함
특정 상태와 관련된 동작을 캡슐화하기 위해 다양한 상태 클래스를 정의하고 상태 판단 로직을 다양한 상태를 나타내는 일련의 클래스로 전달함으로써 복잡한 판단 로직이 단순화됩니다.

  • 상태 패턴은 상태와 동작을 분리하여 객체의 내부 상태가 변경되면 객체의 동작도 변경할 수 있도록 합니다.
  • 각 상태는 하위 클래스에 해당하므로 상태 전환 논리를 상태 하위 클래스에 배포하여 상호 의존성을 줄입니다.
  • 클라이언트는 일반적으로 상태 객체와 직접 상호 작용하지 않고 환경 클래스(Context)를 통해 상태 객체와 상호 작용합니다.

적용 가능한 장면

  1. 객체의 동작은 상태에 따라 달라지며 런타임 시 상태에 따라 동작을 변경해야 합니다.
  2. 작업에는 거대한 다중 분기 구조가 포함되어 있으며 이러한 분기는 개체의 상태에 따라 결정됩니다.

표준 예

여기에 이미지 설명을 삽입하세요.

상태 패턴 구조 다이어그램에는 일반적으로 다음과 같은 역할이 포함됩니다.

  • 컨텍스트(환경 클래스): 컨텍스트 클래스라고도 하며 여러 상태를 갖는 객체입니다. 현재 상태를 정의하는 환경 클래스에서 추상 상태 클래스 State의 인스턴스를 유지합니다.
  • 상태(추상 상태 클래스): 환경 클래스의 특정 상태와 관련된 동작을 캡슐화하기 위한 인터페이스를 정의하는 데 사용됩니다. 다양한 상태에 해당하는 메서드는 추상 상태 클래스에서 선언되고 서브클래스에서 구현됩니다.
  • ConcreteState(구체 상태 클래스): 추상 상태 클래스의 하위 클래스입니다. 각 하위 클래스는 환경 클래스의 상태와 관련된 동작을 구현합니다.

IState

public interface IState {
    void handle();
}