Strategy Pattern을 이용한 사원 List 관리

사원의 List를 관리하는 프로그램을 작성합니다.
기존의 legacy system에서 사용하던 사원의 data는 txt파일 형태로 존재 합니다. 예를 들어 모든 data는 id, name, salary, commission, hourOfWorked, payPerHour 순으로 입력이 되어 있으며 사원의 종류에 따라 어떤 직원은 salary만 기입되어 있는 data도 있으며 salary와 commission만 기입되어 있는 data도 있고 hourOfWorked와 payPerHour만 기입되어 있는 사원이 있습니다. 즉 어떤 사원은 월급을 계산할 때 salary만 주면 되는 것이고 어떤 사원은 salary +commission을 주고 어떤 사원은 시급 * 일한 시간을 계산하여 월급을 계산합니다. 그리고 직원들은 현재 무작위순입니다.
위 txt파일로부터 직원들의 정보를 읽어 들여서 새로운 웹기반의 시스템에서 사용하려고 합니다. 이 직원들의 List를 관리하는 프로그램을 사용하여 직원들을 id또는 이름순으로 정렬하고자 합니다. 정렬 할 때 맨 처음 무작위 순으로 되어 있는 경우는 Quick Sorting이나 Merge Sorting을 사용하는 것이 효율적입니다. 하지만 새로운 직원이 List에 추가 되거나 삭제 될 때는 Insertion Sorting을 사용하는 것도 효율적입니다. 여기서 다시 이름순으로 정렬을 할 때는 기존의 data들이 id순으로 정렬되어 있기 때문에 이름순으로 따진다면 무작위순으로 되어 있는 것과 마찬가지입니다. 따라서 다시 Quick Sorting이나 Merge Sorting을 사용하여 Sorting을 하고 다시 새로운 직원을 추가하거나 삭제 할 때는 Insertion Sorting을 사용할 수 있습니다.

위 상황에 적합하도록 Class들을 구현하여(Design이 보통 선행 될 것입니다.) test class를 작성하여 test해 봅시다.

요약

1. txt 파일로부터 data를 읽어 들여 월급 정보에 따라 직원들의 type에 맞는 객체를 생성하여 List에 추가할 것.
2. List를 Id 순 또는 Name 순으로 최초 정렬을 할 것.(이 때는 Quick Sorting or Merge Sorting사용.)
3. 새로운 직원을 생성하여 List에 추가할 할 것.(이 때는 Insertion Sorting을 사용할 것.)
4. 2번에서 Id로 정렬하였다면 이번에는 Name으로 정렬하도록 합시다.(Name으로 정렬하는 List 관리자로 대체 하면 될 것입니다.)
5. 다시 최초 정렬을 하고.
6. 새로운 직원을 생성하여 추가합니다.