728x90
정의
- 상태를 객체화하여 상태가 행동을 할 수 있도록 위임하는 패턴
- 상태 클래스들을 인터페이스로 캡슐화 하여, 인터페이스를 호출하는 방식
사용하는 경우
- 객체 동작이 상태에 의존하는 경우
- 오브젝트 상태에 따라 여러 부분의 조건문이 있는 경우
예시
/* 캡슐화 인터페이스 정의 */
public interface MonitorState {
public void checkState();
}
/* 상태클래스 정의 */
public class Normal implements MonitorState {
@Override
public void checkState() {
System.out.println("정상상태 확인");
}
}
/* 상태클래스 정의 */
public class Warning implements MonitorState {
@Override
public void checkState() {
System.out.println("경고상태 확인");
}
}
public class Monitor {
private MonitorState monitorState;
public Monitor() {
this.monitorState = new Normal();
}
public void setMonitorState(MonitorState monitorState) {
this.monitorState = monitorState;
}
public void checkState() {
monitorState.checkState();
}
}
public class Main {
public static void main(String[] args) {
Monitor monitor = new Monitor();
monitor.setMonitorState(new Normal());
monitor.checkState();
monitor.setMonitorState(new Warning());
monitor.checkState();
/* 결과 : 정상상태확인 -> 경고상태확인 */
}
}
전략패턴하고 차이가 큰 차이가 없이 유사하다, 단지 용도의 차이
'JAVA' 카테고리의 다른 글
[JAVA] Enum (0) | 2021.06.02 |
---|---|
[JAVA] GC의 종류 (0) | 2021.05.23 |
[JAVA] Builder 패턴 (0) | 2021.05.16 |
[JAVA] 상속 / 컴포지션 (0) | 2021.05.15 |
[JAVA] static 정리 (0) | 2021.05.15 |