일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- ScriptableObject
- 스프라이트 아틀라스
- 최적화
- sprite atlas
- Unity
- Unboxing
- Post Processing
- Strategy Pattern
- ==
- Android Plugin
- 플러그인
- 1인 개발
- Abstract Factory Pattern
- equals
- 포스트 프로세싱
- ReferenceEquals
- 게임 개발
- addressable
- design pattern
- 디자인 패턴
- Reflection
- Zenject
- 인앱 결제
- Addressable System
- UniRx
- c#
- Boxing
Archives
- Today
- Total
One_KWS
커맨드 패턴(Command Pattern) 본문
소개
커맨드 패턴을 이용하면 요구 사항을 객체로 캡슐화 할 수 있으며, 요청을 한 객체와 이 요청을 처리할 객체를 분리한다. 이를 통해, 요청을 수행하는 객체가 다양한 요청을 처리할 수 있으며, 실행 취소, 다시 실행과 같은 기능을 제공할 수 있다.
Invoker
Invoker는 명령 객체를 생성하고 실행될 메서드를 호출한다. 이 때, Command 인터페이스를 통해 ConcreteCommand 객체를 호출하기 때문에 실제 ConcreteCommand 객체의 타입을 알 필요가 없다.
public class Invoker {
private Command command;
public void SetCommand(Command command) {
this.command = command;
}
public void ExecuteCommand() {
command.Execute();
}
}
Command
Command는 코든 커맨드 객체에서 구현해야 하는 인터페이스이다. 모든 명령은 Execute() 메소드 호출을 통해 수행되며, 이 메소드에서는 리시버에 특정 작업을 처리하는 지시를 전달한다. Invoker에서 Execute() 메소드 호출을 통해 요청을 하면 ConcreteCommand 객체에서 Receiver에 있는 메소드를 호출함으로써 그 작업을 처리합니다.
public interface Command {
public void Execute();
}
public class ConcreteCommand : Command {
private Receiver receiver;
public ConcreteCommand(Receiver receiver) {
receiver = receiver;
}
public void Execute() {
receiver.Action();
}
}
Recever
요구 사항을 수행하기 위해 어떤 일을 처리해야 하는지 알고 있는 객체이다. ConcreteCommand 객체가 호출될 때 해당 기능을 실행한다.
public class Receiver {
public void Action() {
Console.WriteLine("Receiver Action");
}
}
Client
ConcreteCommand 객체를 생성하고, Receiver 객체를 설정하여 Invoker에게 전달한다.
public static void Main(string[] args) {
Receiver receiver = new Receiver();
Command command = new ConcreteCommand(receiver);
Invoker invoker = new Invoker();
invoker.SetCommand(command);
invoker.ExecuteCommand();
}
'디자인 패턴' 카테고리의 다른 글
스트래티지 패턴(Strategy Pattern) (0) | 2023.04.13 |
---|---|
추상 팩토리 패턴 (Abstract Factory Pattern) (0) | 2022.06.08 |