Command 패턴 (명령 패턴)


> 특징

· '행위패턴' 중 하나로, 요청(명령)을 객체의 형태로 '캡슐화'하여 사용자가 보낸 요청을 나중에 이용.

· 메소드명, 매개변수 등 요청(명령)에 필요한 정보를 저장 또는 로깅 할 수 있는 패턴.

· 요청을 처리할 작업을 일반화 시켜 요청의 종류와는 무관하게 프로그램 작성이 가능.




> 패턴 구성자


1. Command(명령)

· 발동자 객체제 전달되어 명령을 발동.

2. Receiver(수신자)

· 자신에게 정의된 메소드를 수행.

3. Invoker(발동자)

· 한 발동자에 다수의 커맨드 객체가 전달될 수 있다. 필요에 따라 명령 발동에 대한 기록을 남긴다.

4. Client(사용자)

· 발동자 객체와 하나 이상의 커맨드 객체를 보유한다.





> 다이어그램


 invoker





[예]

> 게임 속 행동 구현 코드

· 객체 내에 명령이 캡슐화 되어 사용자 입장에서는 execute() 만 실행하면 된다. 


using System.Collections;
public class Command {

public virtual void Execute(){}

}

public class CommandFire : Command {
public override void Execute()

{
Fire();
}

void Fire()

{
Debug.Log("Fire");
}

}

public class CommandJump : Command {
public override void Execute()

{
Jump();
}

void Jump()

{

Debug.Log("Jump");

}

}

public class CommandRoll : Command {
public override void Execute()

{

Roll();
}

void Roll()

{

Debug.Log("Roll");

}
}

public class CommandSkill : Command {
public override void Execute()

{

Skill();

}

void Skill()

{

Debug.Log("Skill");

}

}


[참고]

https://ko.wikipedia.org/wiki/%EC%B1%85%EC%9E%84_%EC%97%B0%EC%87%84_%ED%8C%A8%ED%84%B4

http://rapapa.net/?p=3143

'Design Pattern' 카테고리의 다른 글

Chain of Responsibility 패턴  (0) 2018.02.05

+ Recent posts