MVC Pattern

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

  • Model represents an object or JAVA POJO carrying data. It can also have logic to update controller if its data changes
  • View represents the visualization of the data that model contains
  • Controller acts on both model and view. It controls the data flow into model object and updates the view whenever data changes. It keeps and model separate

The example contains Student object acting as a model. StudentView will be a view class, which can print student details on console, and StudentController – the controller class responsible to store data in Student object and update view StudentView accordingly. MVCPatternDemo will use StudentController to demonstrate use of MVC pattern.

MVC Pattern UML Diagram

Step 1 : Create Model

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

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

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 : Use the StudentController methods to demonstrate MVC design pattern usage

public class MVCPatternDemo {
private static Student retrieveStudentFromDatabase() {
Student student = new Student();
student.setName("Robert");
student.setRollNo("10");
return student;
}

public static void main(String[] args) {
Student model = retrieveStudentFromDatabase();
StudentView view = new StudentView();
StudentController controller = new StudentController(model, view);

controller.updateView();

controller.setStudentName("John");
controller.updateView();
}
}

The output will be :

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

Leave a Reply

Your email address will not be published. Required fields are marked *