Tech Collection

[Design Pattern] State Pattern 본문

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
반응형

'Concept > Design Pattern' 카테고리의 다른 글

[Design Pattern] Facade Pattern  (0) 2021.05.30
[Design Pattern] Adapter Pattern  (0) 2021.05.30
[Design Pattern] Decorator Pattern  (0) 2021.05.30
[Design Pattern] Factory Pattern  (0) 2021.05.30
[Design Pattern] Observer Pattern  (0) 2021.05.30