State

디자인패턴

목록 보기
8/12
  • 객체의 내부 상태가 변경될 때 해당 객체가 그의 행동을 변경할 수 있도록 하는 패턴.
  • 상태는 일반적으로 객체의 상태에 따라 적절한 행동들을 선택하는 많은 조건문(if 또는 switch)으로 구현된다.
  • 상태 또는 케이스가 추가될수록 복잡한 조건문에 올바르게 추가하는 것은 쉽지 않은 일. 또는 케이스가 많은 경우 해당 패턴을 쓰지 않으면 나중에 시스템 고도화 등 조건문들이 감당이 안된다.
  • 즉, 객체의 모든 가능한 상태들에 대해 새 클래스들을 만들고 모든 상태별 행동들을 이러한 클래스들로 추출한 것을 State 패턴!(케이스별로 클래스 하나씩!) = if문을 쪼갠 것, if문을 바깥으로 뺀 것. => 즉 유지보수 용이

- 결론, 분할해서 상태를 다뤄라!

- 상태패턴을 사용한다면, 새로운 상태를 추가하는 것은 간단하다!


✅ Before & After

[before]

[after]

*출처: JAVA 언어로 배우는 디자인 패턴 입문: 쉽게 배우는 GoF의 23가지 디자인 패턴


✅ 전략 패턴과 차이

  • 구조는 비슷하나, 각 패턴 목적, 쓰임새의 차이!
  • 전략패턴은 어떤 동작(알고리즘)을 선택해 교체하는 것이고, 상태 변화(if문, 다양한 케이스, 다양한 상태를 유지보수 용이하게 한 점이 중점!)에 따라 동작을 다르게 실행
profile
정리하는게 공부가 될 지 모르겠지만, 정리를 하면 마음만큼은 편해

0개의 댓글