-
[GoF]스테이트 패턴(State Pattern)Gof Design Pattern 2021. 12. 20. 21:12
스테이트 패턴(State Pattern)
스테이트 패턴이란?
클래스가 하나의 상태(state)에 따라 내부의 메서드의 기능이 바뀌는 경우(같은 기능에서 분기(if-else)발생)한다고 하면 이를 각각의 클래스로 분리하는 패턴이다.
스테이트 패턴 왜 사용할까?
객체의 기능이 어떤 상태에 있느냐에 따라 달라질 수 있는데(ex 자동차의 에코모드, 스포츠모드) 이러한 상태가 여러가지이면 if-else와 같은 분기로 표현이 되어 수정,삭제, 추가시 단점이 발생 할 수 있다. 이 때, 기능이 상태(특정 변수같은)에 의존적이라면 스테이트 패턴을 사용하여 클래스로 표현하는 것이 적절하다.
스테이트 패턴을 사용하게 되면
- 상태에 따라 기능을 분리하여 구현
- 새로운 상태 추가나 삭제가 용이함
클래스 다이어그램
객체 협력
- Context : ConcreteState의 인스턴스를 관리하고 서로 상태가 바뀌는 구간을 구현다
- State : Context 가 사용할 메서드를 선언한다. (
추상 클래스or인터페이스 둘다 되겠지) - ConcreateState : 각 상태 클래스가 수행할 State에 선언된 메서드를 구현한다.
코드보기 Click!
'Gof Design Pattern' 카테고리의 다른 글
[GoF] 어댑터패턴(Adapter Pattern) (0) 2021.12.19 [GoF]컴포지트 패턴(Composite Pattern) (0) 2021.12.18 [GoF]데코레이터 패턴(Decorator Pattern) (0) 2021.12.16 [GoF]브릿지 패턴(Bridge Pattern) (0) 2021.12.13 [GoF]전략 패턴(Strategy) (0) 2021.12.10