✅🌲강의 복습 노트/패캠 JavaSpring 강의,코드 복습
Part2. 3-16 객체 코딩으로 복습하기 2
들판속초록풀
2025. 6. 16. 17:14
테스트 프로그램은 다음과 같습니다. 문자를 입력 받아 입력되는 문자에 따라 배분 규칙을 수행하도록 합니다.
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();
}
}
인터페이스를 활용한 정책 프로그래밍
테스트 클래스에서 3개의 구현 클래스가 모두 인스턴스를 생성하기 때문에
각 클래스는 인터페이스의 메서드를 모두 구현해야 한다.
package ch16.scheduler;
public interface Scheduler {
public void getNextCall();
public void sendCallToAgent();
}
package ch16.scheduler;
public class RoundRobin implements Scheduler{
@Override // 재정의
public void getNextCall() {
System.out.println("상담 전화를 순서대로 대기열에서 가져옵니다.");
}
@Override
public void sendCallToAgent() {
System.out.println("다음 순서의 상담원에게 배분합니다.");
}
}
package ch16.scheduler;
public class LeastJob implements Scheduler{
@Override
public void getNextCall() {
System.out.println("상담 전화를 순서대로 대기열에서 가져옵니다.");
}
@Override
public void sendCallToAgent() {
System.out.println("현재 상담업무가 없거나 상담대기가 가장 적은 상담원에게 할당합니다.");
}
}
package ch16.scheduler;
public class PriorityAllocation implements Scheduler{
@Override
public void getNextCall() {
System.out.println("고객등급이 높은 고객의 call을 먼저 가져옵니다");
}
@Override
public void sendCallToAgent() {
System.out.println("업무 숙련도가 높은 상담원에게 먼저 배분합니다");
}
}