设计模式 MVC 模式

  • 设计模式 - MVC模式

    MVC模式代表模型(Model)-视图(View)-控制器(Controller)模式。此模式用于分离应用程序的关注点。
    • 模型-模型代表承载数据的对象或JAVA POJO。如果其数据发生更改,它也可以具有更新控制器的逻辑。
    • 视图-视图表示模型包含的数据的可视化。
    • 控制器-控制器同时作用于模型和视图。它控制数据流入模型对象并在数据更改时更新视图。它使视图和模型分离。
  • 实例

    我们将创建一个充当模型的Student对象。StudentView将是一个视图类,可以在控制台上打印学生详细信息,而StudentController是负责将数据存储在Student对象中并相应地更新视图StudentView的控制器类。
    我们的演示类MVCPatternDemo将使用StudentController演示MVC模式的使用。
    dp
    第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) {
    
          //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;
       }
    }
    
    第5步 - 验证输出。
    
    Student: 
    Name: Robert
    Roll No: 10
    Student: 
    Name: John
    Roll No: 10