Java 디자인 패턴-07.State
(Java 디자인 패턴 스터디 모집 중 : https://github.com/bluedskim/javaDesignPatterns)
패턴 다이어그램
“어떤 객체의 상태에 따라 행위가 변경되는 경우 유용한 패턴”
(출처:https://refactoring.guru/design-patterns/state)
해결하려는 문제
- context의 상태에 따른 처리가 구분되는 경우 해당 구분로직을 context에 하드 코딩하게 되면 경우 확장성이 떨어진다.
특징/용도
- 상태를 클래스화 하고 해당 동작들을 넣는다
- 원래의 객체(context)는 현재 상태 객체의 참조를 가진다
- context는 2개 이상의 상태를 동시에 가질 수는 없다
고려사항
- State 패턴은 Strategy 패턴과 유사하다. 주요한 차이점은 상태객체들은 서로의 존재를 아는 반면 Strategy패턴에서는 Strategy간의 관련성은 없다는 것이다(https://refactoring.guru/design-patterns/state)
클래스 다이어그램
소스
- Context : 상태를 가지고있는 객체(Package.java)
- State
- OrderedState.java
- DelieveredState.java
- ReceivedState.java
- client : StateTest.java