* 예를 들어, 어떤 키를 입력받았을 때 위와 같은 명령을 수행한다고 가정합니다.
void InputHandler::handleInput()
{
if(isPressed(BUTTON_X) jump();
else if(isPressed(BUTTON_Y) fireGun();
else if(isPressed(BUTTON_A) swap_weapon();
else if(isPressed(BUTTON_B) lurch();
}
아주 단순하게 코드를 짜면 위와 같이 짤 수 있을 것입니다.
하지만, 사용자가 키설정 바꿀 수 있는 게임이라면 이렇게 코딩하면 안될 것입니다.
따라서, 다음처럼 코드를 바꿔봅시다.
class Command
{
public:
virtual void execute() = 0;
};
//상속
class JumpCommand : Command
{
public:
virtual void execute() { jump(); }
};
class InputHandler
{
/*....*/
private:
Command* Button_X;
Command* Button_Y;
Command* Button_A;
Command* Button_B;
};
이제, 우리는 execute()만 부르면 알아서 설정 된 함수를 실행하게 될 것입니다.
위와 같은 구조를 커맨드 패턴이라 합니다.
'공부 및 정리 > 프로그래밍 패턴' 카테고리의 다른 글
GOF 프로그래밍 패턴 - 경량 패턴 (0) | 2022.11.12 |
---|---|
GOF - 싱글톤 패턴 (0) | 2022.10.18 |