커맨드 패턴(Command Pattern)이란?
커맨드 패턴을 사용하면 요청 내역을 객체로 캡슐화해서 객체를 서로 다른 요청 내역에 따라 매개변수화할 수 있다. 이러면 요청을 큐에 저장하거나 로그로 기록하거나 작업 취소 기능을 사용할 수 있다.
커맨드 패턴의 주요 구성요소
1. 커맨드(Command): 요청을 나타내는 인터페이스이다. execute 메서드를 통해 실제 요청을 수행한다.
2. 컨크리트 커맨드(Concrete Command): Command 인터페이스를 구현한 구체적인 커맨드 클래스로, 실제 요청을 수행하는 코드가 들어 있다.
3. 호출자(Invoker): 커맨드 객체를 호출하는 객체이다. 이 객체는 클라이언트의 요청을 처리하기 위해 커맨드 객체를 호출한다.
4. 수신자(Receiver): 실제 요청을 처리하는 객체이다. 이 객체는 커맨드에 의해 호출되어 요청을 처리한다.
5. 클라이언트(Client): 커맨드 패턴을 사용하는 객체로, 실제로 커맨드 객체를 생성하고 호출자에게 전달한다.
커맨드 패턴의 특징
1. 요청의 캡슐화: 커맨드 패턴은 요청을 객체로 캡슐화하여 요청을 발생시키는 객체(호출자)와 요청을 수행하는 객체(커맨드)를 분리한다. 이를 통해 요청에 대한 세부사항을 캡슐화하고, 클라이언트는 어떤 요청을 하는지에 대해 알 필요가 없다.
2. 클라이언트와 수신자의 분리: 커맨드 패턴은 클라이언트와 수신자를 분리하여, 클라이언트는 요청의 종류를 알고 있지만 실제 요청의 처리는 수신자가 담당한다. 이로써 클라이언트는 수신자의 변경에 영향을 받지 않고도 요청을 수행할 수 있다.
3. 역할의 분리: 커맨드 패턴은 호출자, 커맨드, 수신자의 역할을 명확히 분리하여, 각각의 책임을 가진 객체들이 서로 독립적으로 확장 가능하도록 한다.
4. 클라이언트에 대한 유연성: 클라이언트는 서로 다른 커맨드 객체를 사용하여 다양한 요청을 처리할 수 있다. 새로운 요청이 추가되거나 변경되어도 클라이언트를 수정하지 않고도 새로운 커맨드를 추가하거나 기존 커맨드를 변경할 수 있다.
5. 취소 기능의 구현 가능: 커맨드 패턴은 실행된 명령을 기록하고 취소할 수 있는 기능을 구현하기에 용이하다. 이를 통해 실행취소(undo) 기능을 지원할 수 있다.
6. 큐에 명령 저장 가능: 명령 객체를 큐에 저장하여 나중에 실행하거나 취소할 수 있는 기능을 제공한다. 이를 통해 일련의 명령을 순차적으로 실행할 수 있다.
'SOFTWARE DESIGN PATTERN' 카테고리의 다른 글
[SOFTWARE DESIGN PATTERN] 05 싱글턴 패턴(Singleton Pattern) (0) | 2023.11.26 |
---|---|
[SOFTWARE DESIGN PATTERN] 04 팩토리 패턴(Factory Pattern) (0) | 2023.11.26 |
[SOFTWARE DESIGN PATTERN] 03 데코레이터 패턴(Decorator Pattern) (0) | 2023.11.26 |
[SOFTWARE DESIGN PATTERN] 02 옵저버 패턴(Observer Pattern) (0) | 2023.11.26 |
[SOFTWARE DESIGN PATTERN] 01 전략 패턴(Strategy Pattern) (0) | 2023.11.26 |