Design Patterns
[Design Patterns] State
우라릭
2024. 6. 9. 00:55
목차
개요
내용
요약
내부 상태가 변경되면 행동도 바꾸자.
예시
TCP 연결을 하는 TCPConnection 클래스가 있다고 생각해봅시다. 이 클래스의 객체는 여러 상태를 가질 수 있습니다: Eastablished, Listening, Closed. 다른 객체로부터 요청을 받았을 때, TCPConnection 객체는 상태에 따라 다르게 으답해야 합니다. 이 문제를 해결하기 위해선 TCPState라는 추상 클래스를 두는 겁니다.
TCPConnection 객체는 상태 객체를 가집니다. 이 클래스는 상태와 관련된 연산을 모두 상태 객체에게 위임합니다. 이를 상태 패턴이라고 합니다.
이야깃거리
언제 써야 할까?
- 객체의 행동이 상태에 달려있고 행동을 런타임에 바꿔야 할 때
장단점
- (Pros) 상태 변화를 명시적으로 만듭니다.
- (Cons) 간단한 동작인 경우 과할 수 있습니다.
Case Study
출처
GoF Design Patterns