디자인 패턴-상태 패턴
상태 패턴에서 클래스 동작은 상태에 따라 변경됩니다. 이러한 유형의 디자인 패턴은 행동 패턴에 속합니다.
상태 패턴에서는 다양한 상태를 나타내는 객체와 상태 객체가 변경됨에 따라 동작이 달라지는 컨텍스트 객체를 만듭니다.
이행
액션을 정의하는 State 인터페이스와 State 인터페이스를 구현하는 구체적인 상태 클래스 를 만들 것 입니다. 컨텍스트 는 State를 전달하는 클래스입니다.
데모 클래스 인 StatePatternDemo 는 Context 및 상태 객체를 사용 하여 상태 유형에 따라 Context 동작의 변화를 보여줍니다.
1 단계
인터페이스를 만듭니다.
State.java
public interface State {
public void doAction(Context context);
}
2 단계
동일한 인터페이스를 구현하는 구체적인 클래스를 만듭니다.
StartState.java
public class StartState implements State {
public void doAction(Context context) {
System.out.println("Player is in start state");
context.setState(this);
}
public String toString(){
return "Start State";
}
}
StopState.java
public class StopState implements State {
public void doAction(Context context) {
System.out.println("Player is in stop state");
context.setState(this);
}
public String toString(){
return "Stop State";
}
}
3 단계
컨텍스트 클래스를 만듭니다 .
Context.java
public class Context {
private State state;
public Context(){
state = null;
}
public void setState(State state){
this.state = state;
}
public State getState(){
return state;
}
}
4 단계
컨텍스트 를 사용하여 상태가 변경 될 때 동작의 변화를 확인합니다.
StatePatternDemo.java
public class StatePatternDemo {
public static void main(String[] args) {
Context context = new Context();
StartState startState = new StartState();
startState.doAction(context);
System.out.println(context.getState().toString());
StopState stopState = new StopState();
stopState.doAction(context);
System.out.println(context.getState().toString());
}
}
5 단계
출력을 확인하십시오.
Player is in start state
Start State
Player is in stop state
Stop State