[java] 커맨드 패턴
커맨드 패턴은 객체의 메서드 호출을 객체로 래핑하여 메서드 호출, 매개변수 및 실행을 캡슐화하는 디자인 패턴입니다. 이 패턴은 실행가능한 명령을 나타내는 객체를 만들고, 이 객체를 통해 실행 작업을 캡슐화하고, 실행작업을 계획할 수 있게 합니다.
커맨드 패턴의 구성요소
커맨드 패턴은 다음과 같은 구성요소로 구성됩니다.
- Command(명령) 인터페이스: 실행가능한 메소드를 선언하는데 사용됩니다.
- ConcreteCommand(구체적 명령): 명령 인터페이스를 구현합니다. 이 클래스에서는 실제 작업을 수행합니다.
- Invoker(호출자): 명령 객체의 실행을 요청합니다.
- Receiver(수신자): ConcreteCommand에 대한 실제 실행 작업을 수행합니다.
- Client(클라이언트): ConcreteCommand를 생성하고 Invoker에게 전달합니다.
Java에서의 커맨드 패턴 예제
다음은 Java에서의 간단한 커맨드 패턴 예제입니다.
// Command interface
public interface Command {
void execute();
}
// ConcreteCommand class
public class ConcreteCommand implements Command {
private Receiver receiver;
public ConcreteCommand(Receiver receiver) {
this.receiver = receiver;
}
public void execute() {
receiver.action();
}
}
// Receiver class
public class Receiver {
public void action() {
System.out.println("Receiver is doing something");
}
}
// Invoker class
public class Invoker {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void executeCommand() {
command.execute();
}
}
// Client class
public class Client {
public static void main(String[] args) {
Receiver receiver = new Receiver();
Command command = new ConcreteCommand(receiver);
Invoker invoker = new Invoker();
invoker.setCommand(command);
invoker.executeCommand();
}
}
위의 예제에서는 Receiver를 호출하여 ConcreteCommand를 실행하는 Invoker를 생성했습니다. 이렇게 함으로써 명령이 요청되었을 때, 실행가능한 명령 객체를 사용하여 작업을 수행할 수 있게 됩니다.
커맨드 패턴은 Java에서 유연한 설계를 가능하게 하며, 실행가능한 명령을 처리하는 방법을 추상화함으로써 객체 간 결합을 완화시킵니다.
더 많은 자세한 내용은 커맨드 패턴을 참고하세요.