안녕하세요. 오늘 알아볼 JAVA 디자인 패턴은 커맨드(Command) 패턴입니다.
1. 커맨드(Command) 패턴 이란?
커맨드 패턴은 요청을 객체로 캡슐화하여 메서드 호출에 의한 연동을 개선하고, 호출 정보를 만들고 저장하는 행동 패턴입니다. 이 패턴은 객체와 그 객체에서 수행되는 동작을 분리하므로, 동작을 하나의 객체로 설정한 다음 해당 객체를 다른 객체에 전달할 수 있습니다. 이를 통해 연산을 요청하는 객체와 연산을 실행하는 객체 간의 의존성이 최소화됩니다.
2. 커맨드(Command) 패턴 구현 방법
커맨드 패턴을 구현하려면 다음 요소들이 필요합니다:
- Command 인터페이스: 모든 커맨드 객체를 위한 공통 인터페이스로, 일반적으로 `execute()` 메서드를 포함합니다.
- ConcreteCommand 클래스: Command 인터페이스를 구현하는 구체적인 커맨드 객체로, 실행할 행동을 캡슐화합니다. 이 클래스는 일반적으로 Receiver 객체를 참조하며, `execute()` 메서드에서 이 Receiver 객체에 작업을 위임합니다.
- Receiver 클래스: 작업을 수행하는 실제 객체입니다.
- Invoker 클래스: Command 객체를 사용하여 요청을 수행하는 호출자 객체입니다.
3. 커맨드(Command) 패턴의 장단점
3.1. 장점
- 메서드 호출을 캡슐화하여, 호출 정보를 저장, 전달 및 조작할 수 있습니다.
- 다양한 동작을 쉽게 추가, 관리하거나 교체할 수 있습니다.
- 높은 응집력과 낮은 결합도로 코드가 유연하고 확장 가능합니다.
- 요청을 통한 동작 실행에 대한 로깅, 트랜잭션, 명령 취소(undo) 등에 적용할 수 있습니다.
3.1. 단점
- 각 명령에 대해 별도의 클래스가 필요하므로, 코드가 복잡해질 수 있습니다.
4. 커맨드(Command) 패턴의 활용 예
커맨드 패턴은 다양한 상황에서 사용할 수 있습니다.
- 실행 취소(undo) 및 재수행(redo)을 지원하는 에디터
- 명령 목록, 큐, 또는 스택을 사용하여 요청을 순차적으로 저장 및 처리 (예: 작업 스케줄러)
- 복잡한 명령 조합을 만들기 위해 기존 명령을 조립하는 경우 (매크로 명령)
- 웹 서비스, REST API 요청을 통한 공통 인터페이스 처리 (요청 커맨드 객체 사용)
2023.07.12 - [JAVA] - 디자인패턴 - 팩토리(Factory) 패턴
2023.07.12 - [JAVA] - 디자인패턴 - 팩토리(Factory) 패턴
2023.07.12 - [JAVA] - 디자인패턴 - 어댑터(Adapter) 패턴
2023.07.12 - [JAVA] - JAVA 디자인패턴 - 싱글톤(Singleton) 패턴
2023.07.13 - [JAVA] - JAVA 디자인패턴 - 옵저버(Observer) 패턴
'JAVA' 카테고리의 다른 글
JAVA 디자인패턴 - 템플릿 메서드(Template Method) 패턴 (0) | 2023.07.16 |
---|---|
JAVA 디자인패턴 - 스트래티지(Strategy) 패턴 (0) | 2023.07.15 |
JAVA 디자인패턴 - 프록시(Proxy) 패턴 (0) | 2023.07.14 |
JAVA 디자인패턴 - 데코레이터(Decorator) 패턴 (0) | 2023.07.13 |
JAVA 디자인패턴 - 옵저버(Observer) 패턴 (0) | 2023.07.13 |
댓글