[JAVA/디자인패턴] MVC Pattern, MVC 패턴
2023. 12. 11. 16:27
반응형
MVC Pattern
비즈니스 로직 및 데이터와 보이는 부분을 분리하는 디자인 패턴.
사용자 인터페이스 로직이 비즈니스 로직보다 더 자주 바뀐다면 MVC를 사용하는 것이 바람직하다.
화면을 포함하는 사용자 인터페이스와 업무 처리 부분을 분리해서 동작할 수 있도록 한다.
MVC는 원래 Smalltalk 언어에서부터 시작되었으나 현재 GUI를 지원하는 프로그램과 웹 프레임워크에서 많이 사용됨
모델(Model) : Application의 데이터를 관리하는 부분 또는 로직
뷰(View) : 데이터가 화면에 보이는 부분을 관리
컨트롤러(Controller) : 사용자의 입력을 처리하고, Model과 View 사이에서 상호작용 할 수 있도록 지원
MVC와 웹
모델(Model)
- 데이터와 비즈니스 로직을 관리하는 부분. 데이터베이스와 상호작용하여 데이터를 읽거나 쓰는 역할. 비즈니스 로직은 사용자가 원하는 기능을 수행하기 위한 규칙이나 알고리즘을 정의한다.
뷰(View)
- 사용자에게 보이는 부분을 담당한다. HTML, CSS, JavaScript 등을 사용하여 사용자 인터페이스를 구성하고, 사용자에게 정보를 표시하거나 입력을 받는다. 뷰는 모델의 데이터를 표시하고 사용자의 이벤트를 감지하여 컨트롤러에 전달한다.
컨트롤러(Controller)
- 사용자의 입력을 처리하고, 그에 따라 모델을 업데이트하거나 뷰를 갱신한다. 사용자가 웹 페이지에서 어떤 동작을 취하면 이를 감지하고, 그에 따라 모델의 데이터를 변경하거나 뷰를 업데이트한다. 또한, 비즈니스 로직을 호출하여 특정 기능을 수행한다.
MVC 예제
Model
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;
}
}
View
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);
}
}
Controller
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());
}
}
public class Main {
private static Student retriveStudentFromDatabase() {
Student student = new Student();
student.setName("Robert");
student.setRollNo("10");
return student;
}
public static void main(String[] args) {
Student model = retriveStudentFromDatabase();
StudentView view = new StudentView();
StudentController controller = new StudentController(model, view);
controller.updateView();
controller.setStudentName("John");
controller.updateView();
}
}
반응형
'CS > Design pattern' 카테고리의 다른 글
[JAVA/디자인패턴] Builder Pattern, 빌더 패턴 (0) | 2024.01.29 |
---|---|
[JAVA/디자인패턴] Composite Pattern, 컴포지트 패턴 (0) | 2023.12.05 |
[JAVA/디자인패턴] Template Method Pattern, 템플릿 메서드 패턴 (0) | 2023.12.05 |
[JAVA/디자인패턴] Command Pattern, 커맨드 패턴 (0) | 2023.11.29 |
[JAVA/디자인패턴] State Pattern, 상태 패턴 (2) | 2023.11.29 |