1. 程式人生 > >設計模式——MVC模式簡介(內含簡單專案實現)

設計模式——MVC模式簡介(內含簡單專案實現)

MVC 模式

MVC 模式代表 Model-View-Controller(模型-檢視-控制器) 模式。這種模式用於應用程式的分層開發。

  • Model(模型) - 模型代表一個存取資料的物件或 JAVA POJO。它也可以帶有邏輯,在資料變化時更新控制器。
  • View(檢視) - 檢視代表模型包含的資料的視覺化。
  • Controller(控制器) - 控制器作用於模型和檢視上。它控制資料流向模型物件,並在資料變化時更新檢視。它使檢視與模型分離開。

實現(做個簡單專案來實現MVC模式)

我們將建立一個作為模型的 Student

 物件。StudentView 是一個把學生詳細資訊輸出到控制檯的檢視類,StudentController 是負責儲存資料到 Student 物件中的控制器類,並相應地更新檢視 StudentView

MVCPatternDemo,我們的演示類使用 StudentController 來演示 MVC 模式的用法。

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

 

結果(截圖):