2016년 4월 1일 금요일

Design Pattern Digest - 19. State

이글은 책 "Java언어로 배우는 디자인 패턴 입문"을 읽고 쓴 요약입니다. 
나만 이해하도록 불친절하게 작성되어 있습니다. 
자세한 내용은 책을 보세요. 


State



  • 상태 변화에 따라서 정의된 모든 action들 - 그림에선 handle() - 에 대한 처리를 각 State가 알아서 진행하는 패턴.
  • ConcreteState는 Singleton으로 생성되어 상태에 따라 Context의 state 변수에 assign된다.
  • State 변경 판단은 각 ConcreteState에서 한다. (ConcreteState간의 독립성이 조금 훼손된다. 어쩔 수 없다. 중앙에서 상태 관리하면 Mediator 패턴처럼 되는데 이 역시 Context가 모든 ConcreteState를 알아야한다는 단점이 있다.)
  • [예제]: Context에 SafeFrame이라는 금고앱. 시간 설정을 하고 주간, 야간 상태에 따라 금고 사용, 비상 벨 사용, 통화 버튼의 동작이 달라진다. ConcreteState는 DayState와 NightState. 



댓글 없음:

댓글 쓰기