커맨드 패턴

문딤·2022년 7월 20일
0
post-thumbnail

커멘드 패턴 예시

커맨드 패턴이란?

커맨드 패턴을 이용하면 요구 사항을 객체로 캡슐화 할 수 있으며, 매개 변수를 써서 여러가지 다른 요구 사항을 집어넣을 수도 있다. 또한 요청 내역을 큐에 저장하거나 로그로 기록할 수도 있으며, 작업취소 기능도 지원가능하다.

예시

커맨드 객체 구현

💨 커맨드 객체

오버라이드된 execute 함수를 보면 같은 이름을 가지고 각기 커맨드 클래스에 맞는 동작을 하게 되어있다.

리시버 객체 구현

💨 리시버 객체

리시버는 커맨드의 명령을 수행하는 역활이다.
execute에 따라 켜고 끄는 대상인 computer

커맨드 객체를 사용할 객체 생성

setCommand()버튼은 커맨드를 변경하는 역할을 한다.
pressButton()은 execute() 즉, 커맨드를 실행하는 명령이다.

메인 메소드

리시버인 컴퓨터 객체, 컴퓨터를 켜는 커맨드 객체와 컴퓨터를 끄는 커맨드 객체를 생성합니다.
그리고 커맨드 객체들을 조작할 버튼 객체를 만드는데 이때 버튼이 커맨드 객체를 받아서 기능 실행을 요청하므로 인보커가 된다.
on, off 커맨드에 따라 동작이 달라졌다.

예시로 우선순위 큐에 문자열을 담아 출력해보았다.

커멘드 패턴의 장단점.

장점

 - 조작을 호출하는 객체를 실제로 조작을 수행하는 객체와 분리한다.

 - 기존 클래스는 그대로 유지되므로 새 명령을 쉽게 추가할 수 있다.

사용시기

 - 작업 수행에 따라 객체를 매개변수화 해야하는 경우

 - 다른 시간에 요청을 작성하고 실행해야하는 경우

 - 롤백, 로깅 또는 트랜잭션 기능을 지원해야 할 때
profile
풀스택개발자가 될래요

0개의 댓글