상태 별 전환 로직 및 UI
소프트웨어 개체는 확장엔 열려있고, 변경엔 닫혀 있어야 한다
그러려면 시스템을 컴포넌트 단위로 분리하고,
저수준 컴포넌트 변경에서 고수준 컴포넌트를 보호할 수 있는 의존성 계층 구조를 만들어야 한다
자식 클래스들은 서로 바꿔 끼워도 부모의 행위가 바뀌지 않는다.
예를 들어, 정사각형의 부모에 직사각형을 넣지 말라는 뜻.
직사각형은 setH, setW로 높이 너비 따로 설정하는데
정사각형은 setSide로 함께 변경하면 사용할 때 혼동 생긴다.
어쩔 수 없이 예외가 들어가면 if문으로 처리하지 말고 그거 공통적으로 처리하는 로직을 따로 만들어라.
1인칭 카메라 이동 및 이동 로직 구현