State Pattern ?
State 패턴은 객체의 상태에 따라 행동을 변경하는 디자인 패턴입니다. 조건문으로 특정 상태를 변경하는 것이 아닌 상태를 객체화하여 필요에 따라 다르게 행동하도록 위임합니다.
💡 State ?
State
란 객체가 가질 수 있는 어떤 조건이나 상황을 나타냅니다.
예를 들어 자동차에 시동이 걸려있는 상태라면 속력을 올리거나 줄일 수 있습니다. 만약 자동차의 시동이 꺼지는 상태라면 속력을 올리거나 줄일 수 없습니다. 자동차 시동 상태에 따라 메소드가 달라집니다.
State 패턴의 구성 요소
- Context : 상태 전환을 관리하는 클래스로 현재 상태를 유지하고 있으며, 상태에 따라 행동을 위임합니다.
- State : 상태를 나타내는 인터페이스 혹은 추상 클래스로 상태별로 다른 행동을 정의합니다.
- ConcreteState : 특정 상태를 나타내는 클래스로 State 인터페이스를 구현하고, 각 상태에 따른 행위를 정의합니다.
State 패턴의 장점
- 유지 보수 용이 : 상태에 따른 동작을 개별 클래스로 옮겨서 관리 할 수 있어 유지 보수가 용이합니다.
- 코드 간결성 : 상태와 관련된 모든 동작을 각각의 클래스에 분산시켜 코드가 간결해집니다.
- 단일 책임 원칙 준수 : 단일 책임 원칙을 준수 할 수 있습니다.
- 개방 폐쇄 원칙 준수 : 개방 폐쇄의 원칙을 준수 할 수 있습니다.