→ 요구사항을 객체로 캡슐화
할 수 있다.
→ 매개변수를 통해 여러 가지 다른 요구 사항을 넣을수도 있다.
리시버
에 특정 작업을 처리하라는 지시를 전달한다.ConcreteCommand는 receiver클래스(has-a)와 command 인터페이스(is-a)를 통해서 만들어진다.
→ 특정행동
과 리시버
사이를 연결해준다.
Invoker에서 execute를 호출하면 ConcreteCommand 객체에서 Receiver에 있는 메소드를 호출함으로써 그 작업을 처리한다.
커맨드 객체는 일련의 행동을 특정 리시버하고 연결시킴으로써 요구 사항을 캡슐화한 것.
→ 연결 하기 위해서 행동(command interface를 상속받으므로써 생기는 것)과 리시버(ex== light같은 클래스를 구성(== has a)함으로써 만든다)를 한 객체에 집어넣고 execute라는 메소드만 공개해서 사용