Command 패턴은 객체 지향 디자인 패턴 중 하나로, 요청을 객체로 캡슐화하여 요청을 수신하는 객체가 이를 처리할 수 있도록 하는 패턴입니다.
Command 패턴은 다음과 같은 구성 요소로 이루어집니다.
- Command: 요청을 캡슐화하는 인터페이스를 정의합니다. Command 인터페이스는 execute() 메서드를 선언합니다.
- ConcreteCommand: Command 인터페이스를 구현한 구체적인 클래스입니다. execute() 메서드를 구현하여 실제 요청 처리를 수행합니다.
- Invoker: 요청을 수신하는 객체를 정의합니다. Invoker는 Command 객체를 유지하고, execute() 메서드를 호출하여 요청을 처리합니다.
- Receiver: 실제 요청 처리를 수행하는 객체입니다. ConcreteCommand는 Receiver 객체를 호출하여 실제 요청 처리를 수행합니다.
Command 패턴을 사용하면 다음과 같은 이점이 있습니다.
- 요청 처리 과정을 캡슐화하므로, 요청 처리 과정의 변경이나 확장에 유연하게 대응할 수 있습니다.
- 요청 처리에 대한 로깅, 취소, 다시 실행 등의 기능을 구현하기 쉽습니다.
- 객체 간의 의존성을 줄일 수 있으며, 객체 간의 결합도를 낮출 수 있습니다.
Command 패턴은 GUI 애플리케이션에서는 메뉴나 버튼 등의 요소들과 이벤트 핸들러 등에서 사용됩니다.
또한, 웹 애플리케이션에서도 HTTP 요청과 응답 처리에 Command 패턴을 적용할 수 있습니다.
native method
다른 언어로 작성된 코드를 호출하도록 만들어진 규약이다.