오늘보다 더 나은 내일의 나에게_

Java MVC Pattern 본문

JAVA

Java MVC Pattern

chan_96 2022. 1. 13. 06:17
728x90

MVC Pattern

M : Model
=> 컨트롤러에서 수행할 내용을 받아 자바코드, SQL / 기능수행하기위해 사용될 데이터들을 정의하는 공간
VO(Value Object) - (필드, 생성자, getter)
DTO(Data Transfer Object)
DAO(Data Access Object)-(DB연동 메소드 필드)

V : View
=> 사용자에게 보여질 화면(UI)

C : Controller
=>View에서 사용자가 요청한 사항에대해 기능을 제공 / 사용자가 요청한 데이터(Model)불러와줌 / 로직

Model <----> Controller <----> View

MVC 패턴 필요성

Low Coupling(결합도) : 객체 혹은 시스템 간의 결합도가 낮다
High Cohesion(응집도) : 하나의 메소드는 하나의 역할만을 동작

=> 즉, 시스템 유지 보수의 편리성 제공
예제 뮤직플레이어 만들기
- 1을 입력받으면 노래를 재생
- 2를 입력받으면 노래를 정지
- 3을 입력받으면 이전노래를 재생
- 4를 입력받으면 다음노래를 재생
- 5를 입력받으면 프로그램이 종료
- 1~5이외 다른 숫자나 문자입력시 "잘못입력하셨습니다." 출력

Model
더보기
package MusicPlayer;

public class Music {
	
	// mp3 데이터
	// 노래제목 -> title
	// 가수이름 -> singer
	// 재생시간 -> playTime
	// getter
	// 생성자 메서드
	// 접근제한하 -> private
	
	private String title;
	private String singer;
	private int playTime;
	//경로에대한 데이터 넣기
	private String path;
	
	public Music(String title, String singer, int playTime, String path) {
		this.title = title;
		this.singer = singer;
		this.playTime = playTime;
		this.path = path;
	}
	
	public String getPath() {
		return path;
	}
	public String getTitle() {
		return title;
	}
	public String getSinger() {
		return singer;
	}
	public int getPlayTime() {
		return playTime;
	}
}​

View
더보기
package MusicPlayer;

import java.util.ArrayList;
import java.util.Scanner;

import javazoom.jl.player.MP3Player;

public class Main {
	public static void main(String[] args) {

		// 뮤직플레이어 만들기!
		
		// 입력받는 도구 불러오기
		Scanner sc = new Scanner(System.in);
		
		// Scanner, Random -> 다른클래스에서 기능가져와서 사용
		// MP3Player 사용하기 위해 가장먼저해야할일!
		MP3Player mp3 = new MP3Player();
		
		//Controller 안에 기능을 사용하기위해 클래스 가져오기
		Controller con = new Controller();
		
		// Music 클래스안에 있는 변수들에게 데이터를 보내줘야함
		//노래 5가지 정보 저장하기
		Music music1 = new Music("깡", "Rain", 59, "C:\\Users\\smhrd\\Desktop\\music\\깡.mp3");
		Music music2 = new Music("Maria", "화사", 59, "C:\\Users\\smhrd\\Desktop\\music\\Maria.mp3");
		Music music3 = new Music("Mago", "이름모름", 59, "C:\\Users\\smhrd\\Desktop\\music\\MAGO.mp3");
		Music music4 = new Music("How you like that", "블랙핑크", 59, "C:\\Users\\smhrd\\Desktop\\music\\How you like that.mp3");
		Music music5 = new Music("살짝설렜어", "오마이걸", 59, "C:\\Users\\smhrd\\Desktop\\music\\살짝설렜어.mp3");
		
//		System.out.println(music1.getTitle());
//		System.out.println(music1.getSinger());
//		System.out.println(music1.getPlayTime());
		// 노래에대한 정보를 정리하기위해서 ArrayList
		
		ArrayList<Music> list = new ArrayList<Music>();
		list.add(music1);
		list.add(music2);
		list.add(music3);
		list.add(music4);
		list.add(music5);
		
		// "깡" music1.getTitle() ----> list.get(0).getTitle()
		//System.out.println(list.get(0).getTitle());
		int index = 0;
		
		while(true) {
			// [1]재생 [2]정지 [3]이전곡 [4]다음곡 [5]종료 >>>
			System.out.print("[1]재생 [2]정지 [3]이전곡 [4]다음곡 [5]종료 >>> ");
			// 사용자에 입력받은 숫자 변수
			int menu = sc.nextInt();
			
			// 1,2,3,4를 입력받았을때는 반복
			// 5입력받았을때 반복 멈춤
			
			if(menu == 1) {
				//재생
				System.out.println(list.get(index).getTitle());
				System.out.println(list.get(index).getSinger());
				System.out.println(list.get(index).getPlayTime());
				
				//노래를 재생시키는 기능을 표현한 곳
				// mp3.play(list.get(index).getPath());
				//Controller에있는 play메서드(기능)을 불러오는 것
				con.play(list, index);
			}else if(menu == 2) {
				//정지
				//노래를 멈추는 기능
				//노래가 재생중일때만 멈추는 기능 사용가능
				con.stop();
				
			}else if(menu == 3) {
				//이전곡
				//1. 인덱스
				index--;
				//2. 이미 노래가 재생중이라면 노래를 멈춰야함
				con.stop();
				//3. 인덱스의 값이 0보다 작으면 index 끝값(list.size()-1)
				if(index < 0) {
					index = list.size()-1;
				}
				System.out.println(list.get(index).getTitle());
				System.out.println(list.get(index).getSinger());
				System.out.println(list.get(index).getPlayTime());
				//4. 노래를 재생시키자
				con.play(list, index);
				
				
			}else if(menu == 4) {
				//다음곡
				
				//인덱스 + 1
				index++;
				//증가된 인덱스 값안에 들어있는 노래를 재생시키자.
				//노래 이미 재생중이라면 노래를 멈추고 다음노래 재생
				con.stop();
				
				//조건2. list 크기를 넘어서면 처음노래로 다시 돌아와서 재생
				if(index >= list.size() - 1) {
					index = 0;
				}
				System.out.println(list.get(index).getTitle());
				System.out.println(list.get(index).getSinger());
				System.out.println(list.get(index).getPlayTime());
				con.play(list, index);
				
			}else if(menu == 5) {
				//종료
				con.stop();
				
				System.out.println("프로그램이 종료되었습니다.");
				break;
			}else {
				System.out.println("잘못입력하셨습니다.");
			}
		}
	}
}​

Controller
더보기
package MusicPlayer;

import java.util.ArrayList;

import javazoom.jl.player.MP3Player;

public class Controller {
	static MP3Player mp3 = new MP3Player();
	public static void main(String[] args) {

	}
	
	public static void play(ArrayList<Music> list, int index) {
		//4. 노래를 재생
		mp3.play(list.get(index).getPath());		
	}
	public static void stop() {
		if(mp3.isPlaying()) {
			mp3.stop();			
		}
	}
}
728x90

'JAVA' 카테고리의 다른 글

Java 추상클래스와 인터페이스  (0) 2022.01.13
Java 상속  (0) 2022.01.13
Java 객체 배열  (0) 2022.01.13
Java 메소드(Method)  (0) 2022.01.13
Java OOP, 생성자  (0) 2022.01.13
Comments