Concept/Design Pattern
[Design Pattern] State Pattern
eee_269
2021. 5. 30. 22:04
728x90
반응형
스테이트 패턴
- 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있다.
- 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다.
- 각각의 state들을 class로 구현한다.
- 공통된 행위의 종류를 interface로 빼고, concrete 클래스들이 이를 구현하도록 한다.
- strategy 패턴과의 차이점
- 서브클래스를 만드는 방법을 대신하여 유연성을 극대화하기 위한 용도로 쓰임
- 행동의 변화를 context가 제어
- state는 내부적으로 정의된 state transition에 따라 변경된다.
- 장점
- 여러 개의 if문을 사용하여 현재 state에 따른 행동을 결정하는 것
- 각각의 state를 class로 만들고, 현재 state를 composition하는 방식으로 구현하여 로직에서 달라지는 부분인 각 state의 behavior들을 캡슐화할 수 있다.
- Open-Closed Prinsipal을 잘 지키기 때문에 특정 state의 로직이 변경되거나 새로운 state가 추가되었을 때 유리하다.
- 단점
- 클래스의 수가 많아진다.
728x90
반응형