디자인 패턴 [커맨드 패턴] 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
'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.03 -
디자인 패턴 [스테이트 패턴] State Pattern 개념 예제
디자인 패턴 [스테이트 패턴] State Pattern 개념 예제
2022.01.03 -
디자인 패턴 [퍼사드 패턴] Facade Pattern 개념 예제
디자인 패턴 [퍼사드 패턴] Facade Pattern 개념 예제
2022.01.03 -
디자인 패턴 [어댑터 패턴] Adapter Pattern 개념 예제
디자인 패턴 [어댑터 패턴] Adapter Pattern 개념 예제
2022.01.03