여러 명령들을 추상화 해서 클래스로 정의하고, 오브젝트로 만들어서 사용하는 패턴
명령들을 추상화 하면 좋은 점은 명령들을 오브젝트처럼 관리할 수 있고, 오브젝트들을 모아두었다가 정해진 시간에 실행 시키는 등의 동작을 가능하게 해준다.
클래스 구조
Command [Interface]
다른 Command 클래스의 Bass가 된다.
실행 함수만 매서드로 가지고 있으면 됨
PrintCommand
- Command를 상속받았으며 출력커맨드 함수
- 부모 클래스와 같은 실행 함수를 가지고 있다.
- 출력만을 위한 String 변수값
Dog
- Stay 함수
- Sit 함수
DogCommand
- Command를 상속받았으며 Dog에게 명령을 내릴 Command 함수
- execute() 에서는 Commands값에 의해 Dog의 함수를 호출한다.
- Dog와 String값의 Commands 변수
Invoker
- Command 배열을 가지고 있다.
- AddCommand() 에서Command 배열에 각 Command를 추가해준다.
- RunCommand()에서 Command 배열의 모든 Command의 execute() 함수를 호출한다.
잊지 말아야 하는 부분은
Command Pattern의 핵심인 "명령을 추상화해서 객체로 다룬다" 이다