명령 패턴은 메서드 호출을 실체화한 것
키를 누르는 것에 직접 함수를 호출하지 않고 한 겹 우회하도록 해라. ( 나중에 키 변경이 있을 수 있다 )
Command라는 클래스를 따로 정의해 놓고 명령과 액터 사이에 추상 계층을 한 단계 더 둔다면 명령을 실행할 때 액터만 바꾸면 플레이어가 게임에 있는 어떤 액터라도 제어할 수 있게 된다.
Command 객체를 선택하는 AI와 이를 실행하는 액터를 디커플링함으로써 코드는 훨씬 유연해진다.
명령 객체가 어떤 작업을 실행할 수 있다면, 이를 실행취소할 수 있게 만드는 것도 어렵지 않다.
여러 단계의 실행취소를 지원하는 것도 그다지 어렵지 않다. 가장 최근 명령만 기억하는 대신, 명령 목록을 유지하고 "현재" 명령이 무엇인지만 알고 있으면 된다. 유저가 명령을 실행하면, 새로 생성된 명령을 목록 맨 뒤에 추가하고, 이를 "현재" 명령으로 기억하면 된다.