MVC 패턴은 Model, View, Controller 의 약자로 세 가지로 기능을 구분하여 작성하는 형식을 말한다.
형식을 따르지 않아도 프로그램 작성은 가능하지만 효율적인 코드 작성 및 관리를 위해 사용을 권장하며 이러한
형식을 디자인패턴(Design Pattern)이라 말한다.
MVC패턴을 사용하는 이유
Model, VIew, Controller 는 다음과 같은 기능을 담당한다.
· View
사용자로 부터 입력을 받거나,
사용자에게 출력을 담당
· Controller
Model 과 View를 제어.
- 시간적 처리 순서
- 값 전달 등
· Model (또는 service 클래스라 불림.)
전달된 데이터 처리를 담당
위와 같이 코드를 작성하게 되면 개발자 입장에서는 매우 편리한 이점을 얻을 수 있다.
예를 들어 학생의 점수를 입력받는 클래스를 만든다 하면 View 에서 작성하고 추후에 원하는 기능을 쉽게 찾거나
수정할 수 있다. 즉, 각 코드에 대해 깔끔하게 정리정돈이 가능하다.
두 번째는 DB와 연동을 하게 된다면 혼잡하게 섞인 코드와 달리 MVC로 정리된 코드는 쉽게 관리가 가능하다.
제어되거나 입력하는 부분이 이곳 저곳에 섞여있다면 DB와 데이터를 주고 받을때 여러 곳에서 처리가 이루어진다.
하지만 MVC 패턴에서는 기능별로 정리가 되어 있으므로 DB와 직접적으로 관련된 Model 쪽에서만 처리할 수
있도록 해주면 시간적으로나 코드 관리 부분에서 많은 이점을 얻을 수 있다.
이처럼 다른 프로그램과 연동될 때 아래 처럼 관계를 갖는다면 효율적인 관리가 가능하다.
※ Model 이 DB 와 관련있는 이유는 처리에 대한 부분은 Model 에서 관리하기에 DB와 데이터를 연동하는 기능 또한 Model 에
존재하기 때문이다.

※ DTO (Data Transmiter Object) : 데이터를 담기 위한 그릇. 기능을 만들기 위한 멤버변수를 가지고 있는 영역(또는 클래스).
<소스코드>
점수를 입력하여 A ~ F 까지 등급으로 환산하는 프로그램이다.
1. VIew
package com;
import java.util.Scanner;
public class InputClass {
Scanner scan = new Scanner(System.in);
public int inputScore() {
System.out.println("View 입니다.");
return scan.nextInt();
}
public void printGrade(String s) {
System.out.println("View 입니다.");
System.out.println("--------------------------");
System.out.println("당신의 학점은 " + s);
System.out.println("--------------------------");
}
}
위 코드를 보면 멤버변수의 선언 없이 오직 입력과 출력만 담당한다는 것을 볼 수 있다.
2. Controller
package com;
public class Controller {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("controller 입니다.");
InputClass input = new InputClass();
Processing proc = new Processing();
input.printGrade(proc.grade(input.inputScore()));
}
}
Controller 부분이다.
Controller에는 main 메소드에서 인스턴스를 생성 하여 메소드를 호출하고 매개변수를 전달하는 것을 볼 수 있다.
즉 처리에 대한 흐름 제어를 하는 부분이다.
3. Model
package com;
public class Processing {
public String grade(int a) {
int score = a/10;
String str = null;
System.out.println("Model 입니다.");
switch(score) {
case 10:
case 9:
str = "A 입니다.";
break;
case 8:
str = "B 입니다.";
break;
case 7:
str = "C 입니다.";
break;
case 6:
str = "D 입니다.";
break;
default:
str = "F 입니다.";
break;
}
return str;
}
}
Model 에서는 View에서 입력된 값을 Controller 에서 인자로 전달받아 분기를 처리하는 모습이다.
처리 후 값을 return 하여 Controller로 전달 뒤 Controller 에서 다시 View로 전달하여 값을 출력하게 된다.
(프로그램에서는 101 이상 || 0 점 이하를 처리하진 않았다..)

실행화면을 보면 MVC 가 각각 자신임을 표시하고 있다.