커맨드 패턴
Command Pattern
커맨드 패턴은 객체 지향 디자인 패턴 중 하나로, 요청을 객체의 형태로 캡슐화하여 실행 가능한 작업으로 만드는 패턴이다.
구성 요소
-
Command (명령)
-
요청을 캡슐화하는 인터페이스
-
일반적으로 execute() 메서드를 포함
-
-
ConcreteCommand (구체적 명령)
-
Command 인터페이스를 구현한 실제 클래스
-
Receiver와 연결되어 실제 요청을 수행
-
-
Receiver (수신자)
-
실제 작업을 수행하는 객체
-
ConcreteCommand에서 호출되는 실제 동작을 구현
-
-
Invoker (호출자)
-
Command 객체를 저장하고 실행하는 역할
-
요청을 발신하는 객체
-
장점
-
요청을 객체로 캡슐화하여 발신자와 수신자 사이의 의존성을 분리
-
실행 취소(Undo)나 재실행(Redo) 기능 구현 가능
-
요청을 큐에 저장하거나 로그로 기록 가능
단점
-
Command 클래스와 ConcreteCommand 클래스가 늘어날수록 코드가 복잡해질 수 있음
-
각 ConcreteCommand 클래스는 실행에 필요한 상태를 유지해야 함