반응형
상태 패턴에서 클래스 동작은 상태에 따라 변경됩니다.
상태 패턴은 행동 패턴입니다.
상태 패턴을 사용할 때 다양한 상태 객체와 상태 객체가 변경 될 때마다 동작이 달라지는 컨텍스트 객체를 만듭니다.
예제
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
반응형
'프로그래밍 > 자바 디자인 패턴' 카테고리의 다른 글
자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 반복자 패턴 (0) | 2021.04.18 |
---|---|
자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 옵저버 패턴 (0) | 2021.04.18 |
자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 자바 인터프린터 패턴 (0) | 2021.04.18 |
자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 자바 NULL 오브젝트 패턴 (0) | 2021.04.18 |
자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 전략 패턴 (0) | 2021.04.18 |