[java] 상태 패턴

상태 패턴은 객체의 상태에 따라 객체의 동작을 변경하기 위한 디자인 패턴입니다. 이 패턴은 객체가 내부적으로 상태를 변경하고 상태에 따라 다른 동작을 수행할 수 있도록 합니다.

상태 패턴 개요

상태 패턴은 다음과 같은 주요 구성 요소로 구성됩니다:

  1. 상태 인터페이스 (State Interface): 여러 상태들이 구현해야 하는 인터페이스로, 상태에 따라 다른 동작을 정의합니다.

  2. 상태 구현체 (State Implementations): 상태 인터페이스를 구현한 여러 상태 클래스들로, 각 상태에 따라 다른 동작을 정의합니다.

  3. 컨텍스트 (Context): 상태 객체를 포함하고 있는 클래스로, 현재 상태에 따라 적절한 동작을 수행합니다.

예제 코드

다음은 자바에서 상태 패턴을 사용한 간단한 예제 코드입니다.

// 상태 인터페이스
public interface State {
    void doAction(Context context);
}

// 상태 구현체
public class StartState implements State {
    public void doAction(Context context) {
        System.out.println("시스템이 시작 상태입니다.");
        context.setState(this);
    }

    public String toString(){
        return "시작 상태";
    }
}

public class StopState implements State {
    public void doAction(Context context) {
        System.out.println("시스템이 정지 상태입니다.");
        context.setState(this);
    }

    public String toString(){
        return "정지 상태";
    }
}

// 컨텍스트
public class Context {
    private State state;

    public void setState(State state){
        this.state = state;
    }

    public State getState(){
        return state;
    }
}

상태 패턴 활용

상태 패턴은 상태 간의 전이를 쉽게 관리할 수 있도록 도와주며, 코드의 유연성과 확장성을 향상시킵니다. 또한, 복잡한 조건문을 피하고 각 상태에 대한 동작을 개별적으로 관리할 수 있도록 해줍니다.

마치며

상태 패턴은 객체지향 소프트웨어 디자인에서 유용하게 활용될 수 있는 디자인 패턴 중 하나입니다. 정확한 문제 해결과 유지 보수성을 고려할 때, 상태 패턴을 적용해 보는 것이 좋을 수 있습니다.

더 많은 정보를 원하시면 “State Pattern”를 확인해보세요.


참고 자료