State 패턴

뾰족머리삼돌이·2024년 10월 7일
0

디자인패턴

목록 보기
20/21

어릴 적, 디지몬이라는 만화를 즐겨봤던 기억이 있다.
아구몬, 파피몬 등 다양한 디지몬들이 파트너와 함께 성장해가며 탐험하는 내용으로 기억한다.

디지몬의 핵심적인 특징은 "진화" 였다.
진화를 통해 아구몬 -> 그레이몬 -> 메탈그레이몬 -> 워그레몬 순서대로 변화되며, 각 단계마다 쓸 수 있는 기술도 함께 달라졌다.
이후, 시간경과에 따라 다시 초기의 단계인 아구몬으로 돌아가는 구조를 띄고있었다.

이렇듯 객체의 상태에 따라 수행되는 작업이 달라져야하는 경우에 유용한 디자인패턴이 State 패턴이다.

객체는 상태를 지니고 있어야하고, 이 상태에 따라 행동이 변화해야한다.

이 개념이 해당 패턴의 핵심적인 부분이다.

구현하기 적합한 방법은 인터페이스를 이용하는 것으로,
객체가 상태를 보유했을 때, 이를 인터페이스와 하위클래스로 표현할 수 있다.

클래스 구조도를 살펴보면 Context라는 클래스가 존재한다.
이는 Client가 직접적으로 사용하려는 객체타입이며, 상태를 보유해야한다.

상태(state)는 인터페이스로 관리되며, 자신이 수행할 수 있는 동작을 가지고있다.
공통적인 기본동작은 default 메서드로 작성되며, 각 상태별 상세 동작은 하위 클래스에서 구현을 통해 작성한다.

이렇게 되면 Contextstate 필드를 변경함으로써 자신의 상태와 함께 동작까지 변화시킬 수 있다.

0개의 댓글

관련 채용 정보