개발/Java

디자인 패턴 - MVC 패턴

dev-bleck 2022. 11. 6. 22:58

MVC 패턴이란?

Model - View - Controller Pattern. 애플리케이션의 관심사를 분리하는 목적으로 사용됨. 코드 간의 구분을 명확히 하여 코드가 용이하고 유지보수가 수월함.

Model : 데이터를 전달하는 객체. 데이터 처리 영역.

View : Model에 포함된 데어터의 시각화를 담당.

Controller : Model로부터 데이터의 흐름을 제어하고, 데이터가 변경될 때마다 View를 업데이트함.

 

MVC 패턴을 이용한 Student 객체 구현

Student 객체

 

Step 1. Model : Student.java

public class Student {
	private String rollNo; // 학생 번호
	private String name; // 학생 이름
	
    	// gettern & setter
	public String getRollNo() {
		return rollNo;
	}
	
	public void setRollNo(String rollNo) {
		this.rollNo = rollNo;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
}

 

Step 2. View : StudentView.java

public class StudentView {
	public void printStudentDetails(String studentName, String studentRollNo) {
		System.out.println("Student : ");
		System.out.println("Name : " + studentName);
		System.out.println("Roll No : " + studentRollNo);
	}
}

 

Step 3. Controller : StudentController.java

public class StudentController { 
	private Student model;
	private StudentView view;
	
	public StudentController(Student model, StudentView view) {
		this.model = model;
		this.view = view;
	}
	
	public void setStudentName(String name) {
		model.setName(name);
	}
	
	public String getStudentName() {
		return model.getName();
	}
	
	public void setStudentRollNo(String rollNo) {
		model.setRollNo(rollNo);
	}
	
	public String getStudentRollNo() {
		return model.getRollNo()
	}
	
	public void updateView() {
		view.printStudentDetails(model.getName(), model.getRollNo());
	}
}

 

Step 4. MVCPatternDemo.java

public class MVCPatternDemo {
	public static void main(String[] aregs) {
		Student model = retriveStudentFromDatabase();
		
		Student view = new StudentView();
		
		StudentController controller = new StudentController(model, view);
		
		controller.updateView();
		
		controller.setStudentNmae("John");
		
		controller.updateView();
	}
	
	private static Student retriveStudentFromDatabase() {
		Studen student = new Student();
		student.setName("Robert");
		student.setRollNo("10");
		return student;
	}
}

 

Return

Student: 
Name: Robert
Roll No: 10
Student: 
Name: John
Roll No: 10

 

 

참고 URL

- https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm

728x90