단순히 Read와 Create라고 말할 수 있지만
추가적으로 Idempotent라는 특징이 있다.
Idempotent와 관련된 개념은 HTTP Method :: Idempotent, Options, Head, Trace, Connect글에서 학습하자.
자바는 객체지향 언어이다.
즉 가상머신 내에 존재하는 것은 객체들로 이루어져 있다.
물론 객체를 만들기 위한 클래스들도 있다.
그렇기 때문에 객체가 필요하다면 클래스의 형태를 보고 언제든지 만들어 낼 수 있다.
컴파일 후 생성된 .class 파일은 클래스의 모든 정보를 담게 된다.
이 .class의 바이트는 가상머신에 Class 클래스의 형태로 로딩 되어진다.
그리고 로딩된 클래스의 정보를 보고 객체를 만들게 된다.
요구사항을 객체로 캡슐화 할 수 있으며 매개변수를 써서 여러 가지 다른 요구 사항을 집어넣을수 있다.
사용자의 요청을 객체화하고 그 객체만 있으면 해당 커맨드가 어떤 작업을 수행했는지 알 수 있다.
그렇기 때문에 요청 내역을 큐에 저장하거나 로그로 기록할 수 있으며 작업 취소 기능도 지원 가능하다.
커맨드 객체는 일련의 행동을 특정 리시버하고 연결시킴으로써 요구사항을 캡슐화한다.
이렇게 하기 위해 행동과 리시버를 한 객체에 집어넣고 메소드 하나만 외부에 공개하는 방법을 사용한다.
커맨드 패턴은 행위 패턴 카테고리에 속하며 행동을 캡슐화하여 미리 요청을 가지고 있다가 요청할 때 사용할 수 있도록 한다.
따라서 요청과 수행의 관계가 느슨하여 SOLID의 DIP(The Dependency Inversion Priciple)를 따른다.