MVC 패턴


MVC 패턴은 Model-View-Controller(Model-View-Controller) 패턴을 의미합니다. 이 패턴은 애플리케이션의 계층화된 개발에 사용됩니다.

  • Model(모델) - 모델은 데이터에 액세스하는 객체 또는 JAVA POJO를 나타냅니다. 데이터가 변경되면 컨트롤러를 업데이트하는 논리도 있을 수 있습니다.

  • View - 뷰는 모델에 포함된 데이터의 시각화를 나타냅니다.

  • Controller - 컨트롤러는 모델과 뷰에 따라 작동합니다. 모델 객체에 대한 데이터 흐름을 제어하고 데이터가 변경되면 뷰를 업데이트합니다. 모델과 뷰를 분리합니다.

Implementation

Student 개체를 모델로 생성하겠습니다. StudentView는 학생 세부 정보를 콘솔에 출력하는 뷰 클래스이고, StudentControllerStudent 개체에 데이터를 저장하고 이에 따라 뷰 StudentView를 업데이트하는 컨트롤러 클래스입니다.

MVCPatternDemo, 데모 클래스에서는 StudentController를 사용하여 MVC 패턴의 사용법을 보여줍니다.

mvc_pattern_uml_diagram.jpg

1단계

모델을 생성합니다.

Student.java

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;
   }
}

2단계

뷰를 생성합니다.

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);
   }
}

3단계

컨트롤러를 생성합니다.

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());
   }	
}

4단계

StudentController 메서드를 사용하여 MVC 디자인 패턴의 사용법을 보여줍니다.

MVCPatternDemo.java

public class MVCPatternDemo {
   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();
   }

   private static Student retriveStudentFromDatabase(){
      Student student = new Student();
      student.setName("Robert");
      student.setRollNo("10");
      return student;
   }
}

5단계

출력을 확인합니다.

rreee