- 어떤 행위를 수행할 때 상태에 행위를 수행하도록 위임
- 시스템의 각 상태를 클래스로 분리해 표현
- 각 클래스에서 수행하는 행위들을 메서드로 구현
- 외부로부터 캡슐화하기 위해 인터페이스를 생성하여 시스템의 각 상태를 나타나는 클래스로 실체화
시작과 정지라는 상태로 하는 간단한 예제
1. 상태 인터페이스
public interface State {
public void doAction(Context context);
}
2. 상태별 구현 클래스
public class StartState implements State{
@Override
public void doAction(Context context) {
System.out.println("start");
context.setState(this);
}
@Override
public String toString() {
return "StartState";
}
}
public class StopState implements State{
@Override
public void doAction(Context context) {
System.out.println("stop");
context.setState(this);
}
@Override
public String toString() {
return "StopState";
}
}
3. context
public class Context {
private State state;
public Context() {
this.state = null;
}
public void setState(State state) {
this.state = state;
}
public State getState() {
return state;
}
}
4. 실행 & 결과
public class StatePatternDemo {
public static void main(String[] args) {
Context context = new Context();
StartState start = new StartState();
start.doAction(context);
StopState stop = new StopState();
stop.doAction(context);
System.out.println(context.getState());
}
}
'Design Pattern > 행위 패턴' 카테고리의 다른 글
Template Method Pattern (0) | 2021.06.24 |
---|---|
Strategy 전략 프로젝트에 적용 해보기 (0) | 2021.05.28 |
Command Pattern (0) | 2021.05.12 |
Strategy Pattern (0) | 2021.05.06 |