Command Pattern
커맨드 패턴(Command pattern)은 어떤 요청을 객체로 만들어서 캡슐화해서 요청의 저장, 로깅, 취소를 할 수 있게 도와준다.
커맨드 패턴의 핵심인 Command interface는 아주 간단한 구조를 가지고 있다.
public interface Command
{
public void execute();
}
간단한 구조를 가지고 있는 만큼, 사용자는 다양한 방식으로 자체 커맨드를 만들어서 보낼 수 있다. 예를 들어, 플레이어를 점프하게 만드는 커맨드를 보내고 싶다고 생각해보자. 그럼 먼저 그에 해당하는 커맨드를 구체적으로 정의한다.
public class JumpCommand : Command
{
public void Execute()
{
Console.WriteLine("Player jump is invoked.");
}
}
그리고 이 커맨드를 커맨드를 저장하고 있을 구조체에 보낸다.
void Update ()
{
if (Input.GetButtonDown("Jump"))
{
playerCmdStack.Add(new JumpCommand());
}
}
Why Command Pattern?
사용법은 얼추 알 수 있지만, 왜 사용해야 하는지는 위의 예시로 느끼기 힘들다. 위의 예시를 확장해 생각해보면, Jump하는 커맨드가 플레이어 뿐만이 아니라 다른 NPC에도 쓰일 수 있다. 그때도 같은 구조를 들고갈 수 있다. 또한 이런 여러 명령들을 저장하고 있기 때문에, Undo와 Redo를 하기에 용이하다.
'Coding > Unity, C#' 카테고리의 다른 글
Unity : Addressable Asset System (0) | 2021.03.02 |
---|---|
Unity : Virtual, Abstract, Interface (0) | 2021.02.23 |
[Unity] Save, Load (0) | 2021.02.23 |
[Unity / Mirror] Authority (0) | 2021.02.19 |
Unity : Built-in Pipeline, Forward Rendering Path (0) | 2021.02.16 |