명령 분배 패턴(Command Dispatch Pattern)
일반적으로 사용하는 (undo가 있는)커맨드 패턴과는 다르다.
GoF는 명령 패턴을 요청이 객체로 캡슐화되어 있을 경우라고 기술한다.
예전 1997년에 귀도 반 로섬은 비슷하게 기능을 수행하지만, 파이썬과 펄 과 같은 동적 언어에만 있는 패턴을 식별하였고 거기에 명령어 분배(Command Dispatch)
패턴이라고 명명했다.
슬프게도, 파이썬 프로그램에서 일반적으로 이 패턴을 많이 사용하고 있음에도 불구하고 그 이름은 거의 잊혀졌다. 이를 패턴으로 인지하는 것조차도 망각된 듯하다.
바깥의 소스로부터 전송된 수 많은 다양한 명령어들을 실행할 필요가 있는 클래스가 있다고 해보자.
이를 처리하는 다양한 방법이 있다.
1. 조건문으로 구분
2. 딕셔너리 활용
3. 명령분배 패턴
귀도(Guido)가 언급했듯이: 나는 이 접근법이 아주 우아하다고 생각하며 그 동안 많이 사용했다는 것을 발견하였다.
이 패턴은 BaseHTTPServer, cmd, pydoc, repr, sgmllib, SimpleXMLRPCServer, urllib, distutils와 같은 파이썬 라이브러리 전반에 걸쳐서 사용되었다.
참조: