상태 패턴
- 객체의 상태에 따라 동작을 다르게 하는 객체 지향 디자인 패턴
- 해당 패턴 적용 시 상태를 객체로 캡슐화하여 상태 전환을 쉽게 관리할 수 있으며, 조건문을 사용하지 않고 객체의 행동을 변경 가능
주요 구성 요소
1. Context
- 상태를 갖는 객체
- 상태 변경을 위한 인터페이스를 제공하고 현재 상태를 유지
2. State
- 상태를 나타내는 인터페이스 혹은 추상 클래스
- 특정 상태에 따른 행동 정의
3. ConcreteState
- State 인터페이스 구현체
- 각 상태에 따른 행동 정의
상태 패턴 동작 방식
- Context는 State 인터페이스를 통해 현재 상태 객체 호출
- 상태 전환 필요할 때 Context는 현재 상태를 다른 상태로 교체
- 각 ConcreteState 클래스는 Context의 상태 변경을 유발할 수 있음
상태 패턴 구현 예시
1. State 인터페이스
2. ConcreteState 클래스
3. Context 클래스
4. 클라이언트 코드
상태 패턴 장단점
장점
- 상태에 따른 동작을 개별 클래스로 옮겨 관리 가능 (SOLID의 SRP 원칙)
- 기존의 특정 상태에 따른 동작을 변경하지 않으면서 새로운 상태에 따른 동작 추가 가능 (SOLID의 OCP 원칙)
단점
- ConcreteState가 늘어남에 따라 클래스 수가 많아져 관리 포인트가 늘어나고 복잡도 증가
참고
코딩으로 학습하는 GoF의 디자인 패턴 - 백기선 강사님
반응형
'Design Pattern' 카테고리의 다른 글
[디자인 패턴] 템플릿 메서드 패턴 (Template Method Pattern) (0) | 2024.07.03 |
---|---|
[디자인 패턴] 전략 패턴 (Strategy Pattern) (0) | 2024.07.03 |
[디자인 패턴] 옵저버 패턴 (Observer Pattern) (0) | 2024.07.02 |
[디자인 패턴] 메멘토 패턴 (Memento Pattern) (1) | 2024.06.30 |
[디자인 패턴] 커맨드 패턴 (Command Pattern) (0) | 2024.06.30 |