본문으로 건너뛰기
객체지향 설계 · 디자인 패턴LESSON 12

Command 패턴: 요청·입력·실행 취소 분리

난이도중급 → 심화
예상 시간65분
선수지식이전 강의

12강. Command 패턴: 요청·입력·실행 취소 분리

1. 이번 강의에서 해결할 문제​

버튼 콜백이 직접 저장과 상태를 바꾸면 입력 재매핑, 큐 실행, 되돌리기와 테스트가 어렵습니다.

2. 학습 목표​

3. 핵심 개념​

Command는 “무엇을 실행할지”를 호출 시점·입력 장치에서 분리합니다. undo는 모든 동작을 자동 역산하지 않으며 실행 전 상태나 보상 명령을 설계해야 합니다.

4. 구현​

CompleteTaskCommand.h
class Command { public: virtual ~Command() = default;
virtual void execute() = 0; virtual void undo() = 0; };
class CompleteTaskCommand final : public Command {
TaskService& service_; TaskId id_; std::optional<TaskSnapshot> before_;
public: void execute() override; void undo() override;
};

5. 코드가 동작하는 이유​

UI는 Command만 호출하고 명령은 필요한 수신자와 이전 상태를 명시적으로 보관합니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

Command 패턴: 요청·입력·실행 취소 분리 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“Command 패턴: 요청·입력·실행 취소 분리” 구현을 설계할 때 책임과 구조를 올바르게 나눈 선택은 무엇인가요?
  2. 문제 2“Command 패턴: 요청·입력·실행 취소 분리” 실습 중 ‘외부 메일도 undo라고 주장’ 상황을 발견했습니다. 본문과 일치하는 설명은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

12강. Command 패턴: 요청·입력·실행 취소 분리 미완료 상태