2009-10-19 4 views

답변

2

IMO와 같은 상황에서는 명령 패턴이 과도하게 사용됩니다. 명령이 완전히 일시적 (개체를 저장하거나 조작하지 않음)하면 추가 된 복잡성, 개체 코드 오버 헤드 및 명령 사용의 보편적 인 부분에 거의 유의하지 않습니다.

보다 적절한 방법은 간단한 스위치 및 메서드 호출입니다. 아마도 구현에서 호출하는 인터페이스를 분리해야 할 수도 있습니다.하지만 나중에 수행 할 수도 있습니다 (테스트 나 추적을 원할 경우 나중에 수행하는 것이 좋습니다). 키가 변경 될 수 있으면 입력 값에서 조치 값으로의 간단한 맵이 간단해야합니다.

+0

감사합니다. Tom - 커맨드 패턴이 약간 과장되어 있다고 생각했습니다. 입력을 받아지도에서 해당 키를 조회하고 Map value 메소드를 다른 클래스의 Reflection을 통해 호출하려고 시도한 입력 핸들러 클래스가 있다고 생각합니다. KEY_A, performMoveLeftAction() KEY_S, performMoveRightAction() KEY_SPACE, performFireAction() 등 맵 파일에서로드 할 수 및 구성을 허용 할 . 이 소리가 그럴듯하고 특정 패턴과 일치합니까? 방문자 패턴을 줄이는 것과 비슷합니다. – Amoeba

1

입력에 대해 더 많이 알지 못하면 Interpreter pattern을보고 실제로 명령을 실행하는 명령 패턴과 결합하여 입력을 읽고 구문 분석하는 것이 유용 할 수 있습니다.

1

이 기술은 일반적으로 "double dispatch"이라고하지만 인터프리터 패턴은 일반적인 패턴을 설명합니다.

1

명령 패턴에서 런타임 입력이 없음을 의미하는 명령을 불변으로 만드는 것이 가장 좋습니다. 이상하게 문제를 복잡하게하지 마십시오. 실시간으로 입력을 받아들이고 어떻게 든 해석해야합니다 (패턴을 설정하면 Thomas의 팁을보십시오). 큰 switch 문이나 큰 if-else 블록을 없애려는 경우 추상 팩터 리 패턴이 유용 할 수 있습니다.