스테이트 패턴. 스트레티지랑 동일한 클래스 구조를 가지고 있다.

하지만 차이점은 분명하다.

스트레티지의 경우 그 행동에 대한 내용을 정의 해서 각기 객체에 전달하여 그 내용을 실행하지만,

스테이트의 경우는 실행 중 그 내용에 따라 각기 행동에 맞게 바꿀 수가 있따.

하나의 전환 흐름을 판단 할 수 있게 모든 행동 패턴들은 관리자로 넘어온다.(Context 객체)

그 관리자에서 취합한 정보들을 가지고 각기 행동에 대한 맞는 객체를 전달하여 기능을 실행한다.