Java Design Pattern - Model-View-Controller(MVC) Pattern
업데이트:
Design Pattern
- 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것이다.
- 디자인 패턴은 알고리즘이 아니라 상황에 따라 자주 쓰이는 설계 방법을 정리한 코딩 방법론일 뿐이며 모든 상황의 해결책이 아니다.
Model-View-Controller(MVC) Pattern
- 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 기 위해 사용한다.
Example
public class Student {
private String rollNo;
private String name;
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;
}
}
- 데이터의 구조인 Student 클래스를 정의한다.
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);
}
}
- 데이터의 시각화 역할을 수행할 StudentView 클래스를 정의한다.
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());
}
}
- View와 Model을 이어줄 수 있는 StudentController 클래스를 정의한다.
public class MVCPatternMain {
public static void main(String[] args) {
// Fetch student record based on his roll no from the database.
Student model = retriveStudentFromDatabase();
// Create a view : to write student details on console.
StudentView view = new StudentView();
StudentController controller = new StudentController(model, view);
controller.updateView();
// Update model data.
controller.setStudentName("John");
controller.updateView();
}
private static Student retriveStudentFromDatabase() {
Student student = new Student();
student.setName("Robert");
student.setRollNo("10");
return student;
}
}
- Controller 객체에 View와 Model 객체를 주입하여 기능을 수행해본다.
Source
Sample Code는 여기에서 확인 가능합니다.
댓글남기기