DesignPatterns에서 BehavioralPatterns의 하나.
시스템의 각 상태를 클래스로 표현한다. 상태변화는 상태를 나타내고 있는 클래스를 교체하는것으로 표현한다.
Structure
Example
AWT로 만든 GUI금고상황보여주기 예제 StateSafe.java
- 금고는 주간/야간에 따라 use,phone,alarm이 다르게 행동한다.
StatePattern을 안쓰면 주간/야간은 if 문 안으로 들어갈것이다.
state역할은 SingletonPattern이 쓰인다.
- 프로그램안에서 1초는 1시간
- doClock에서 현재상태를 점검하고 changeState메쏘드로 상황을 바꾼다.
관련정보
논의
다수의 if, else if로 표현되는 각 상태들을 클래스로 추출한다. SeeAlso WhySwitchStatementsAreBadSmell