본문 바로가기

프로그래밍/자바 디자인 패턴

자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 상태 패턴

반응형

상태 패턴에서 클래스 동작은 상태에 따라 변경됩니다.

상태 패턴은 행동 패턴입니다.

상태 패턴을 사용할 때 다양한 상태 객체와 상태 객체가 변경 될 때마다 동작이 달라지는 컨텍스트 객체를 만듭니다.

예제

 


interface State {
  public void doAction(Context context);
}

class StartState implements State {
  public void doAction(Context context) {
    System.out.println("In start state");
    context.setState(this);
  }

  public String toString() {
    return "Start State";
  }
}

class StopState implements State {

  public void doAction(Context context) {
    System.out.println("In stop state");
    context.setState(this);
  }

  public String toString() {
    return "Stop State";
  }
}

class PlayState implements State {
  public void doAction(Context context) {
    System.out.println("In play state");
    context.setState(this);  
  }
  public String toString() {
    return "Play State";
  }
}

class Context {
  private State state;

  public Context() {
    state = null;
  }

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

  public State getState() {
    return state;
  }
}

public class Main {
  public static void main(String[] args) {
    Context context = new Context();

    StartState startState = new StartState();
    startState.doAction(context);

    System.out.println(context.getState().toString());

    PlayState playState = new PlayState();
    playState.doAction(context);
    
    StopState stopState = new StopState();
    stopState.doAction(context);

    System.out.println(context.getState().toString());
  }
}

위의 코드는 다음 결과를 출력합니다

 


In start state
Start State
In play state
In stop state
Stop State
반응형