22. 상태 패턴(State Pattern)

22.1 개요

프로그래밍을 하다 보면 개체의 상태에 따라 구체적인 행위가 다르게 작성해야 하는 경우가 있습니다. 상태 패턴은 이와 같이 상태에 따라 동작을 다르게 해야 하는 부분만 별도의 클래스로 정의를 하는 패턴입니다.

상태 패턴에서는 특정 형식의 개체가 상태에 따라 동작을 다르게 하는 행위를 조사하여 추상 클래스로 만듭니다. 그리고, 각 상태에 따라 구체적인 행동을 하는 파생 클래스들을 정의합니다. 이처럼 정의하면 특정 형식에서 해당 부분은 별도의 상태 개체를 통해 수행하게 됩니다. 개발자 입장에서 본다면 특정 형식의 상태 추가나 삭제를 빠르고 유연하게 대처할 수 있습니다.

 “상태 패턴은 상태에 따라 동작을 다르게 하는 부분만 별도의 클래스로 정의하는 패턴”

 

23. 2 시나리오

이번에 EH Camera 업체에서는 단순화 된 UI를 갖는 카메라를 기획하고 있습니다. 이전의 카메라에서는 셔터 스피드를 조절하는 다이얼은 앞쪽에 있고 조리개의 F값을 조절하는 다이얼은 뒤쪽에 있었는데 많은 사용자들이 앞쪽에 있는 다이얼을 사용하지 않는 것으로 조사되었습니다. 이번에 제작할 카메라에는 다이얼을 하나만 만들겠다고 합니다.  기본적으로 다이얼로 조리개의 F값을 조절을 하게 만들고 셔터 뒤에 있는 정보 보기 버튼을 누른 상태에서는 다이얼로 셔터 스피드를 조절하게 한다고 합니다. 저도 생각해 보니 앞쪽 다이얼은 자주 사용하지 않는 것 같아요. 새로운 카메라가 나오기 전에 셔터 스피드를 조절하여 사진을 찍었을 때 어떠한 변화가 있는지 체험해 봐야겠어요.

이번 주에는 천안 운동장에 가서 혁재의 뛰노는 모습을 담아볼래요.


22. 상태 패턴(State Pattern) 설계

22. 상태 패턴(State Pattern) 구현