인터페이스를 활용한 정책 프로그래밍
고객 센터에 전화 상담을 하는 상담원들이 있습니다. 일단 고객에게서 전화가 오면 대기열에 저장되고 각 상담원에게 배분이 됩니다.
배분이 되는 정책은 크게 세 가지가 있습니다.
- 모든 상담원이 동일한 상담 건수를 처리하도록 상담원 순서대로 배분합니다.
- 쉬고 있거나 상담원에게 할당된 통화 수가 가장 적은 상담원에게 배분합니다.
- 고객의 등급에 따라 등급이 높은 고객은 업무능력이 우수한 상담원에게 배분합니다.
세 가지 정책은 필요에 따라 바뀌어 운영될 수 있습니다. 다음 클래스 다이어그램을 참고하여 각 배분 규칙이 적용되도록 구현해 보세요
테스트 프로그램은 다음과 같습니다. 문자를 입력 받아 입력되는 문자에 따라 배분 규칙을 수행하도록 합니다.
public class SchedulerTest {
public static void main(String[] args) throws IOException {
System.out.println("전화 상담원 할당 방식을 선택하세요");
System.out.println("R : 한명씩 차례대로");
System.out.println("L : 대기가 적은 상담원 우선");
System.out.println("P : 우선순위가 높은 고객우선 숙련도 높은 상담원");
int ch = System.in.read();
Scheduler scheduler = null;
if ( ch == 'R' || ch =='r') {
scheduler = new RoundRobin();
}
else if ( ch == 'L' || ch =='l') {
scheduler = new LeastJob();
}
else if ( ch == 'P' || ch =='p') {
scheduler = new PriorityAllocation();
}
else {
System.out.println("지원되지 않는 기능입니다.");
return;
}
scheduler.getNextCall();
scheduler.sendCallToAgent();
}
}
- Scheduler.java
package com.ch16.policy;
public interface Scheduler {
void getNextCall();
void sendCallToAgent();
}
- Scheduler 인터페이스를 생성한다.
- 사용될 메서드를 선언
- RoundRobin.java
package com.ch16.policy;
public class RoundRobin implements Scheduler{
@Override
public void getNextCall() {
System.out.println("상담 전화를 순서대로 대기열에서 가져옵니다.");
}
@Override
public void sendCallToAgent() {
System.out.println("다음 순서의 상담원에게 배분합니다.");
}
}
- Scheduler를 implements 하고, 구현되지 않은 메서드들을 구현한다.
- 마찬가지로 LeastJob, PriorityAllocation.java를 위와 같은 방법으로 구현 한 후 실행한다.
'개발공부 > 객체 지향 핵심' 카테고리의 다른 글
[Java] 16. 복습해보기 - GameLevel (0) | 2022.02.02 |
---|---|
[Java] 15. 여러 인터페이스 구현하기, 인터페이스의 상속 (0) | 2022.02.02 |
[Java] 14. 인터페이스의 여러가지 요소 (0) | 2022.02.02 |
[Java] 13. 인터페이스를 활용한 다형성 구현 (dao 구현하기) (0) | 2022.02.02 |
[Java] 12. 인터페이스는 왜 사용하는가 (0) | 2022.02.02 |