2014-12-22 2 views
0

방금 ​​"게임 프로그래밍 패턴"이라는 책을 읽기 시작했습니다. 맨 처음에는 명령 패턴이라는 간단한 패턴이 설명되었으며, 그 예로는 특정 키가 트리거하는 동작을 구성 할 수있는 것이있었습니다. 그러나 실제로, 나는 그것에 관한 질문이있다.명령 패턴의 사용

Map<Key, Action> map 
if(isPressed(key)) map.get(key).trigger() 

결과는 동일 할 것, 그리고 솔직히, 그것은 좀 더 효과적인 내 마음에있는 것 같다 : 왜 당신은 대신 같은 일을하는 작업을 실행하는 명령을 사용합니다. 아무도 내게 이유를 설명해 주시겠습니까? 그 상황에서 위의 예제 대신 명령 패턴을 사용 하시겠습니까?

명령 패턴 예 :

Command* this_specific_key_command; 
if(isPressed(key)) this_specific_key_command.trigger() 

명령 클래스는 엉망 코드에 대한 죄송합니다

class Command{ 
    virtual void trigger() = 0; 
} 

같은입니다. 이해할 수 있기를 바랍니다.

답변

2

실제로 첫 번째 구현은 정확히 명령 패턴입니다. 명령 패턴의 정의는 다음과 같습니다.

The Command Pattern encapsulates a request as an object, thereby letting you 
parameterize other objects with different requests, queue or log requests, and support 
undoable operations. 

이 정의의 첫 번째 문장은 명령 패턴을 정의합니다. 귀하가 제공 한 두 샘플 모두 동등합니다. 첫 번째에서는 Action이라는 객체를 호출하고 두 번째에서는 Command라고 부릅니다. 둘 다 똑같습니다. 요청을 캡슐화하는 객체 (정의가 참조하는 객체)입니다.

포인터를 저장하거나 맵을 사용하여 이러한 명령을 저장하는 것은 중요하지 않습니다. 중요한 점은 이러한 객체에 요청 (또는 수행 할 작업)을 캡슐화하는 trigger()이라는 메서드가 있다는 것입니다. 이것이 명령 패턴을 만드는 것입니다.

+0

아, 맞아! 나는 그것을 지금 이해한다고 생각한다! 감사! – Fly

관련 문제