1. 주제
- 미디어 타입에 따라 구분하여 관리 및 동작시킬 수 있는 MediaPlayer를 구현
2. 클래스 설명
2.1 InvalidMediaTypeException -설문혁
커스텀 예외를 처리하기 위한 클래스
- Song, Video 이외의 타입을 입력받으면 예외를 throw함.
Exception
클래스를 상속 받음
2.2 Main - 홍우민
MediaLibrary클래스의 객체를 생성하며, MediaLibrary객체의 startLogic()메소드를 실행시킨다.
- startLogic()메소드가 실행되면? (간단히 설명)
- while문을 통해 exit명령어가 입력되기 전까지 무한히 명령어와 미디어 타입을 입력받음.
- 명령어에 따라 알맞은 메소드를 호출하고 미디어 타입을 전달인자로 넘겨줌.
- 명령어에 따른 적절한 동작 수행.
2.3 Media - 함께
다양한 미디어 유형(Song, Video)들이 공통으로 구현해야 할 메소드를 정의한 인터페이스
- 미디어 실행, 볼륨 조절, 제목 가져오기, 아티스트 가져오기, 평점 가져오기 및 수정하기 기능을 제공
- 메소드의 body가 없으므로, public abstract 메소드로 간주됨.
- 인터페이스의 메소드들 중 유일하게 setter인 setRating(int rating) 메소드에만 파라미터가 존재함.
2.4 MediaFactory - 홍우민
미디어를 add 할 때, 필요한 객체를 쉽게 얻기 위해 팩토리 패턴을 사용
- 객체 생성 로직을 클라이언트 코드로부터 분리하여 코드의 유연성과 재사용성을 높이는 데 사용하는 디자인 패턴
createMedia()
를 통해 다른 타입의 객체의 add를 간결하게 할 수 있음
- static으로 선언되어, 객체 생성 없이 메소드 호출 가능.
Media media = MediaFactory.createMedia(mediaType, title, artist, rating);
mediaPlayList.addMedia(media);