커맨드 패턴
요청(명령)을 객체로 캡슐화하여, 명령을 컬렉션에 저장하고 실행 시점을 제어하거나 실행 취소 및 로깅등을 활용하는 패턴
어떤 작업을 요청하는 부분(Invoker)과 그 작업을 처리하는 부분(Receiver)을 분리
요청을 커맨드 객체로 캡슐화하여 실행, 취소, 로깅, 큐잉등을 유연하게 처리
커맨드 객체: 특정 행동을 특정 리시버와 연결해서 요청을 캡슐화한 객체
리시버 객체: 실제 비즈니스 로직을 수행하는 객체, 커맨드는 리시버의 메서드를 호출만함
인보커 객체: 커맨드를 실행시키는 역할로, 커맨드가 무엇을 하는지 관심없고 실행만함
1. Command 인터페이스 정의
interface Command {
execute(): void
undo(): void
}2. Receiver 객체 정의
class Light {
on() {
console.log("Light On")
}
off() {
console.log("Light Off")
}
}3. 구체적인 Command 객체 정의
4. Invoker 객체 정의
5. 클라이언트 코드
Last updated