MVC 개발 패턴이란
- MVC란 Model View Controller의 약자이다.
- MVC는 서비스하는 방식에 대한 하나의 아이디어 디자인 패턴이다.
이미지로 보기
패턴 특징
- 개발 파트가 Model, View, Controller로 나뉘어 있다.
- 한 프로그램에서 Model, View, Controller의 객체는 1개씩만 사용한다.(싱글톤 패턴)
파트별 특징
- Model(DAO)
- 데이터와 관련된 로직을 처리하는 부분이다.
- 항상 정확한 값을 받았다라고 가정하고 데이터 처리한다.
- 출력 처리가 일절 존재하지 않는다.
// 사용자와는 전혀 상호작용을 하지 않기 때문에
// 출력이 단 한개도 없다
public class CalcModel {
public int plus(int num1, int num2) {
return num1 + num2;
}
public int minus(int num1, int num2) {
return num1 - num2;
}
public int by(int num1, int num2) {
return num1*num2;
}
}
- View
- 사용자와 관련된 작업을 처리하는 부분이다.
- 사용자의 모든 입력 값에 대해서 유효성 검사를 한다.
- 유효성 검사에 따른 안내를 한다.
- 사용자 편의성을 고려한다.=>UI/UX
// 사용자와의 input, output만을 고려하는 파트
public class CalcView {
private Scanner sc;
private ArrayList<String> opList;
public CalcView() {
sc = new Scanner(System.in);
opList = new ArrayList<String>();
opList.add("+");
opList.add("-");
opList.add("x");
opList.add("X");
opList.add("*");
}
// 사용자가 제공받아야하는 문구를 제작
public void printInputInteger(int num) {
System.out.println("정수 " + num + " 입력 >>");
}
public void printInputOp() {
System.out.println("연산자 입력 >>");
}
public void printResult(int num1, String op, int num2, int result) {
System.out.println("결과는 " + num1 + " " + op + " " + num2 + " = " + result + " 입니다.");
}
// 사용자의 입력을 받력을 받아야하는 부분을 제작
public int inputInteger() {
int num;
while (true) {
try {
num = sc.nextInt();
break;
} catch (Exception e) {
sc.nextLine();
System.out.println("[로그] 종수만 입력 가능합니다.");
}
}
return num;
}
public String inputOp() {
String op = "";
while (true) {
op = sc.next();
if (op.contains("+") || op.contains("-") || op.contains("X") || op.contains("x")) {
break;
}
System.out.println("[로그] 없는 연사자이거나 아직 개발 되지않은 연산자 입니다...");
}
return op;
}
}
- Controller
- Model과 View를 중개한다.
- Model과 View는 절대로 직접 결합되어서는 안된다. Controller를 통해서만 결합되어야만 한다.
- 자체적으로 기능을 가지고 있지 않고 View와 Model을 호출해서 사용만 한다.
- 메인에 호출되는 유일한 파트
// Ctrl은 절대로 자신 스스로 기능을 구현 하지 않는다.
// M,V호출 사용만
public class ClacCtrl {
private CalcModel model;
private CalcView view;
public ClacCtrl() {
model = new CalcModel();
view = new CalcView();
}
public void startApp() {
view.printInputInteger(1);
int num1 = view.inputInteger();
view.printInputOp();
String op = view.inputOp();
view.printInputInteger(2);
int num2 = view.inputInteger();
int result;
if (op.equals("+")) {
result = model.plus(num1, num2);
} else if (op.equals("-")) {
result = model.minus(num1, num2);
} else {
result = model.by(num1, num2);
}
view.printResult(num1, op, num2, result);
}
}
- DTO
- JAVA는 2개이상의 값을 return할 수 없기 때문에, 여러개의 값을 들고다닐 목적으로 만든 클래스이다.
- 자료형이 없어서 개발자가 직접 만든 클래스
- VO라고도 한다.
public class StudentDTO {
private int num; // PK
private String name; // 이름
private int score; // 점수
public StudentDTO(int num, String name, int score) {
this.num = num; // PK 초기화
this.name = name; // 이름 초기화
this.score = score; // 점수 초기화
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public String toString() {
return num + "번 " + name + "학생 " + score + "점";
}
}
개발 패턴을 이용 했을 경우의 이점
- 다른 사람이 코드 작성 중일 때 실행 가능하다.
- 다른 사람과의 동시간 버전 관리가 가능하다.
'개발 패턴 > MVC' 카테고리의 다른 글
[개발패턴] <MVC2> Servlet의 .doGet, .doPost, .doAction은 누가하는가 (1) | 2024.01.11 |
---|---|
[개발패턴] <MVC2> Web MVC2 PATTERN NO Spring (0) | 2024.01.10 |
[개발패턴] <MVC1> 웹 MVC1 PATTERN NO SPRING (0) | 2024.01.09 |