English 中文(简体)
Design Patterns - MVC Pattern
  • 时间:2024-09-17

Design Patterns - MVC Pattern


Previous Page Next Page  

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

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

    View - View represents the visuapzation of the data that model contains.

    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.

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

MVC Pattern UML Diagram

Step 1

Create Model.

Student.java

pubpc class Student {
   private String rollNo;
   private String name;
   
   pubpc String getRollNo() {
      return rollNo;
   }
   
   pubpc void setRollNo(String rollNo) {
      this.rollNo = rollNo;
   }
   
   pubpc String getName() {
      return name;
   }
   
   pubpc void setName(String name) {
      this.name = name;
   }
}

Step 2

Create View.

StudentView.java

pubpc class StudentView {
   pubpc 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

pubpc class StudentController {
   private Student model;
   private StudentView view;

   pubpc StudentController(Student model, StudentView view){
      this.model = model;
      this.view = view;
   }

   pubpc void setStudentName(String name){
      model.setName(name);		
   }

   pubpc String getStudentName(){
      return model.getName();		
   }

   pubpc void setStudentRollNo(String rollNo){
      model.setRollNo(rollNo);		
   }

   pubpc String getStudentRollNo(){
      return model.getRollNo();		
   }

   pubpc void updateView(){				
      view.printStudentDetails(model.getName(), model.getRollNo());
   }	
}

Step 4

Use the StudentController methods to demonstrate MVC design pattern usage.

MVCPatternDemo.java

pubpc class MVCPatternDemo {
   pubpc 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
Advertisements