디자인 패턴 [커맨드 패턴] Command Pattern 개념 예제
Command Pattern이란?
▶ 요구사항(요청, 명령)을 객체로 캡슐화시킵니다. 이를 이용해서 다른 요구사항을 지닌 클라이언트를 매개변수화 시킬 수 있습니다. 말 그대로 리모콘처럼 여러 가지의 명령어를 부여하여 그것을 호출하는 것입니다.
코드 요약
▶ People 객체는 Command 인터페이스의 List를 가지고 있고 List에는 Calculator의 각각의 기능이 있습니다. List의 인덱스를 호출하여 각각 다른 계산을 이용할 수 있습니다.
클래스 다이어그램

1. AddCalculator class
public class AddCalculator implements Commend{ @Override public double execute(double n1, double n2) { return n1+n2; } }
2. MinusCalculator class
public class MinusCalculator implements Commend{ @Override public double execute(double n1, double n2) { return n1-n2; } }
3. Commend interface
public interface Commend { double execute(double n1, double n2); }
4. People class
import java.util.ArrayList; import java.util.List; public class People { List<Commend> commendList = new ArrayList<>(); public void addCommend(Commend commend) { commendList.add(commend); } public double execute(int index, double n1, double n2){ return commendList.get(index).execute(n1,n2); } }
5. Main class
public class Main { public static void main(String[] args) { MinusCalculator minusCalculator = new MinusCalculator(); AddCalculator addCalculator = new AddCalculator(); People people = new People(); // 0 번째 index 에 minus 계산기 명령어를 수행하는 객체 추가 people.addCommend(minusCalculator); // 1 번째 index 에 add 계산기 명령어를 수행하는 객체 추가 people.addCommend(addCalculator); // minus 계산기 사용 double result1 = people.execute(0, 1, 2); // add 계산기 사용 double result2 = people.execute(1, 1, 2); System.out.println(result1); System.out.println(result2); } }
이처럼 각각의 명령에 따라 다른 역할을 수행하도록 하는 것이 Command Pattern입니다. 읽어주셔서 감사합니다.
전체 코드는 아래에서 확인 가능합니다:)
https://github.com/rlaehdals/design-pattern
GitHub - rlaehdals/design-pattern
Contribute to rlaehdals/design-pattern development by creating an account on GitHub.
github.com
'Desing Pattern' 카테고리의 다른 글
디자인 패턴 [템플릿 패턴] Template Pattern 개념 예제 (0) | 2022.01.03 |
---|---|
디자인 패턴 [스테이트 패턴] State Pattern 개념 예제 (0) | 2022.01.03 |
디자인 패턴 [퍼사드 패턴] Facade Pattern 개념 예제 (0) | 2022.01.03 |
디자인 패턴 [어댑터 패턴] Adapter Pattern 개념 예제 (0) | 2022.01.03 |
디자인 패턴 DAO Pattern 개념과 예제 (0) | 2022.01.01 |
댓글
이 글 공유하기
다른 글
-
디자인 패턴 [템플릿 패턴] Template Pattern 개념 예제
디자인 패턴 [템플릿 패턴] Template Pattern 개념 예제
2022.01.03Template Pattern이란? ▶ 알고리즘의 뼈대를 정의하고, 일부를 서브 클래스로 위임합니다. 템플릿 메소드는 알고리즘 구조를 변경하지 않고 알고리즘의 일부 내용을 서브 클래스에서 재정의하여 중복되는 코드를 줄이고 유지보수를 편리하게 할 수 있다. 코드 요약 ▶ CalculaotrTemplate 추상객체는 덧셈을 하는 연산을 가지고 있습니다. 연산 결과에 앞뒤로 꾸며주는 코드를 작성합니다. 이때 abstract decorate()를 사용하여 서브 클래스에서 계산을 마친 결과를 꾸며주고 return 합니다. 클래스 다이어그램 1. AddDotCalculator class public class AddDotCalculator extends CalculatorTemplate{ @Override publ… -
디자인 패턴 [스테이트 패턴] State Pattern 개념 예제
디자인 패턴 [스테이트 패턴] State Pattern 개념 예제
2022.01.03State Pattern이란? ▶ 객체의 내부 상태가 바뀔 때 객체의 동작을 변경할 수 있도록 합니다. (객체의 현재 상태에따라 입력 혹은 실행하는 메소드가 다르다.) 코드 요약 ▶ Calculator 객체는 StartState, Num1State, OperandState, Num2State총 4가지의 상태를 가집니다. 사용자는 숫자 혹은 연산자를 입력하며 'q'가 입력되면 종료합니다. 1. StartState: 숫자를 입력받고 num1에 저장합니다. 2. Num1State: 연산자를 입력 받고 operand에 저장합니다. 3. OperandState: 숫자를 입력받고 num2에 저장합니다. 4. Num2State: '='을 입력받아 계산을 실행하고 출력합니다. 클래스 다이어그램 1. State inte… -
디자인 패턴 [퍼사드 패턴] Facade Pattern 개념 예제
디자인 패턴 [퍼사드 패턴] Facade Pattern 개념 예제
2022.01.03Facade Pattern이란? ▶ 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스 제공하여 서브시스템을 쉽게 사용이 가능합니다. 코드 요약 ▶ People 객체의 Facade 객체는 Calculator와 Print 객체를 동시에 이용합니다. Facade 객체가 Calculator와 Print 객체를 서브시스템으로 캡슐화를 해놓아서 People 객체는 실행하면 Facade 객체가 두 class의 로직을 호출 해줍니다. 클래스 다이어그램 1. Calculator class public class Calculator { public double add(double n1, double n2){ return n1+n2; } } 2. Print class public class Print { publ… -
디자인 패턴 [어댑터 패턴] Adapter Pattern 개념 예제
디자인 패턴 [어댑터 패턴] Adapter Pattern 개념 예제
2022.01.03
댓글을 사용할 수 없습니다.