Design Pattern 简明教程

Design Patterns - MVC Pattern

MVC 模式代表模型-视图-控制器模式。此模式用于分离应用程序的关注点。

MVC Pattern stands for Model-View-Controller Pattern. This pattern is used to separate application’s concerns.

  1. Model - Model represents an object or JAVA POJO carrying data. It can also have logic to update controller if its data changes.

  2. View - View represents the visualization of the data that model contains.

  3. Controller - Controller acts on both model and view. It controls the data flow into model object and updates the view whenever data changes. It keeps view and model separate.

Implementation

我们将创建一个充当模型的学生对象。学生视图将是一个可以在控制台上打印学生详细信息的视图类,而学生控制器是负责将数据存储在学生对象中并相应更新视图的学生视图的控制器类。

We are going to create a Student object acting as a model.StudentView will be a view class which can print student details on console and StudentController is the controller class responsible to store data in Student object and update view StudentView accordingly.

MVC 模式演示,我们的演示类将使用学生控制器演示 MVC 模式的使用。

MVCPatternDemo, our demo class, will use StudentController to demonstrate use of MVC pattern.

mvc pattern uml diagram

Step 1

创建模型。

Create Model.

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

Step 2

创建视图。

Create View.

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

Step 3

创建控制器。

Create Controller.

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

Step 4

使用 StudentController 方法来演示 MVC 设计模式的用法。

Use the StudentController methods to demonstrate MVC design pattern usage.

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

Step 5

验证输出。

Verify the output.

Student:
Name: Robert
Roll No: 10
Student:
Name: John
Roll No: 10