Java MVC Pattern(MVC 模式)

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

  • Model(模型) - 模型代表一個存取數據的對象或 JAVA POJO。它也可以帶有邏輯,在數據變化時更新控制器。
  • View(視圖) - 視圖代表模型包含的數據的可視化。
  • Controller(控制器) - 控制器作用于模型和視圖上。它控制數據流向模型對象,并在數據變化時更新視圖。它使視圖與模型分離開。
  1. 創建模型。
/**
 * 1. 創建模型。Model
 * @author mazaiting
 */
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;
    }   
}   
  1. 創建視圖。
/**
 * 2. 創建視圖。 View
 * @author mazaiting
 */
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);
    }
}
  1. 創建控制器。
/**
 * 3. 創建控制器。 Controller
 * @author mazaiting
 */
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());
    }
    
}
  1. 使用 StudentController 方法來演示 MVC 設計模式的用法。
public class Client {
    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;
    }
}
  1. 打印結果
Student: 
Name: Robert
Roll No: 10
Student: 
Name: John
Roll No: 10
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容