행위(Behavioral) 패턴에 속한다.
클래스가 일을 실행할 때, 자신의 클래스나 다른 클래스의 메소드를 호출한다. 그러나 메소드를 호출한 결과는 오브젝트의 상태에 반영되지만, 일의 이력은 어디에도 남지 않는다.
이때, '이 일을 실행하시오' 라는 '명령'을 표현하는 클래스가 있으면 편리하다.
명령을 나타내는 클래스의 인스턴스로 하나의 '물건'처럼 표현할 수 있다.
명령에 대한 이력을 관리하고 싶을 때에는 그 인스턴스 집합을 관리하면 된다.
명령의 집합을 저장해 두면 같은 명령을 재실행할 수도 있고, 복수의 명령을 모아서 새로운 명령으로 재이용할 수도 있다.
**이와 같은 명령을 'Command Pattern'이라고 이름을 붙여서 사용한다.

Command: 명령의 인터페이스를 정의하는 역할을 합니다. 주로 execute() 메서드를 포함하며, 이 메서드는 명령을 실행하는 로직을 담고 있습니다.
ConcreteCommand (Command1): 실제로 실행되는 기능을 구현합니다. Command 인터페이스를 구현하며, 특정 수신자(Receiver) 객체에 대한 참조를 가지고 해당 객체의 메서드를 호출하여 작업을 수행합니다.
Invoker: 명령의 행동을 개시하는 역할을 합니다. Command 객체를 가지고 있으며, 필요한 시점에 Command의 execute() 메서드를 호출하여 명령을 실행합니다.
Receiver: Command가 명령을 실행할 때 그 대상이 되는 역할을 합니다. 실제 작업을 수행하는 로직을 가지고 있습니다.
즉, 여러 명령들을 추상화해서 class로 정의하고 object로 만들어서 사용하는 pattern이다.