Command 패턴 (명령 패턴)
> 특징
· '행위패턴' 중 하나로, 요청(명령)을 객체의 형태로 '캡슐화'하여 사용자가 보낸 요청을 나중에 이용.
· 메소드명, 매개변수 등 요청(명령)에 필요한 정보를 저장 또는 로깅 할 수 있는 패턴.
· 요청을 처리할 작업을 일반화 시켜 요청의 종류와는 무관하게 프로그램 작성이 가능.
> 패턴 구성자
1. Command(명령):
· 발동자 객체제 전달되어 명령을 발동.
2. Receiver(수신자):
· 자신에게 정의된 메소드를 수행.
3. Invoker(발동자)
· 한 발동자에 다수의 커맨드 객체가 전달될 수 있다. 필요에 따라 명령 발동에 대한 기록을 남긴다.
4. Client(사용자)
· 발동자 객체와 하나 이상의 커맨드 객체를 보유한다.
> 다이어그램
|
[예]
> 게임 속 행동 구현 코드
· 객체 내에 명령이 캡슐화 되어 사용자 입장에서는 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
'Design Pattern' 카테고리의 다른 글
Chain of Responsibility 패턴 (0) | 2018.02.05 |
---|