ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 문제 1 - Chap13 / kr.co.ezenac.review02
    개발자 수업/Java 2021. 10. 26. 09:59

    package kr.co.ezenac.review02;
    
    import java.io.IOException;
    
    /*
     * 고객센터에 전화 상담을 하는 일반인들이 있습니다.
     * 일단 고객에게서 전화가 오면 대기열에 저장되고 각 상담원에게 배분이 됩니다.
     * 배분이 되는 정책은 크게 3가지가 있습니다.
     * 	1. 모든 상담원이 동일한 상담 건수를 처리하도록 상담원 순서대로 배분합니다.
     * 	2. 쉬고 있거나 상담원에게 할당된 통화 수가 가장 적은 상담원에게 배분합니다.
     * 	3. 고객 등급에 따라 등급이 높은 고객은 업무능력이 우수한 상담원에게 배분합니다.
     * 
     * <출력예시>
     * 	전화 상담원 할당 방식을 선택하세요.
     * 	R : 한 명씩 차례대로
     *  L : 대기가 적은 상담원 우선
     *  P : 우선순위가 높은 고객 우선 숙련도 높은 상담원
     * 
     * 	r
     * 	상담 전화를 순서대로 대기열에서 가져옵니다.
     * 	다음 순서의 상담원에게 배분합니다.
     *  
     *  l
     *  상담 전화를 순서대로 대기열에서 가져옵니다.
     *  현재 상담 업무가 없거나 상담 대기가 가장 적은 상담원에게 할당합니다.
     *  
     *  p
     *  고객 등급이 높은 고객의 Call을 먼저 가져옵니다.
     *  업무 숙련도가 높은 상담원에게 먼저 배분합니다.
     *  
     *  u
     *  지원되지 않는 기능입니다.
     */
    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 : 우선순위가 높은 고객 우선 숙련도 높은 상담원");
    		System.out.print("선택 > ");
    		
    		int channel = System.in.read();
    		
    		Schduler schduler = null;
    		
    		if(channel == 'R' || channel == 'r') {
    			schduler = new RoundRobin();
    		} else if(channel == 'L' || channel == 'l') {
    			schduler = new LeastJob();
    		} else if(channel == 'P' || channel == 'p') {
    			schduler = new PriorityAllocation();
    		} else {
    			System.out.println("지원되지 않는 기능입니다.");
    			return;
    		}
    		
    		schduler.getNextCall();
    		schduler.sendCallToAgent();
    		
    	}
    }
    public class LeastJob implements Schduler {
    
    	@Override
    	public void getNextCall() {
    		System.out.println("상담 전화를 순서대로 대기열에서 가져옵니다.");
    		
    	}
    
    	@Override
    	public void sendCallToAgent() {
    		System.out.println("현재 상담 업무가 없거나 상담 대기가 가장 적은 상담원에게 할당합니다.");
    		
    	}
    	
    }
    public class RoundRobin implements Schduler {
    
    	@Override
    	public void getNextCall() {
    		System.out.println("상담 전화를 순서대로 대기열에서 가져옵니다.");
    		
    	}
    
    	@Override
    	public void sendCallToAgent() {
    		System.out.println("다음 순서의 상담원에게 배분합니다.");
    		
    	}
    	
    }
    public class PriorityAllocation implements Schduler {
    
    	@Override
    	public void getNextCall() {
    		System.out.println("고객 등급이 높은 고객의 Call을 먼저 가져옵니다.");
    		
    	}
    
    	@Override
    	public void sendCallToAgent() {
    		System.out.println("업무 숙련도가 높은 상담원에게 먼저 배분합니다.");
    		
    	}
    	
    }
    public interface Schduler {
    	public void getNextCall();
    	public void sendCallToAgent();
    }

    '개발자 수업 > Java' 카테고리의 다른 글

    Java MiniProject  (0) 2021.10.26
    문제 2 - Chap09 / kr.co.ezenac.assignment  (0) 2021.10.26
    31. 멀티스레드2  (0) 2021.10.25
    30. Review  (0) 2021.10.25
    29. 멀티스레드  (0) 2021.10.22

    댓글