
- view(presentation)과 비즈니스 로직의 직접 연관을 제거(행위가 소스에 하드코딩되어 있다면 런타임에 추가/변경이 불가능)
- 조건문이 많은 복잡한 로직을 간단하게
- invoker와 receiver 사이에 command를 두어 직접 연관을 제거하여 새로운 command가 추가되더라도 invoker를 수정할 필요가 없음
- 행위behavioral 패턴
- 눈에 보이지 않는 무형의 개념(행위)도 객체화 할 수 있다.
- command용 interface(TextFileOperation.java)는 @FunctionalInterface로 할 수 있다.
- client : command를 초기화하고 invoker를 호출
- TextFileOperationExecutorWithoutCommandTest.java : command를 사용하지 않은 샘플 테스트용
- TextFileOperationExecutorWithCommandTest.java : command를 사용한 샘플 테스트용
- invoker : command를 받아 interface에 정의된 메소드를 호출하고 필요 시 이력 저장용 list에 저장
- TextFileOperationExecutorWithCommand.java
- receiver : 실제 로직이 정의된 클래스
- TextFile.java
- command : command 객체
- TextFileOperation.java : command용 interface
- OpenTextFileOperation.java : 파일 open하기 command
- SaveTextFileOperation.java : 파일 save하기 command