详见本人在b站发的视频

25分钟带你了解Java MVC开发模式

什么是MVC?

  • M: Model 模型,也叫实体类,一般用于和数据库等底层方面交互
  • V: View 视图,一般为用户所看到的界面,直接于用户打交道
  • C: Controller 控制器,一般用于联系Model和View和执行一些业务操作

为什么要用MVC模式来开发Java?

要从久远的JSP开发说起了......

当时主流使用JSP进行网页的开发,但是实际上JSP就是带有Java的HTML,这会使得JSP页面在后期很难去维护,耦合度过高,导致项目结构较为模糊.

这个时候MVC就可以解决很大一部分问题了
MVC解决了耦合性高的问题,使得在更改和维护项目时更加简单,耗费资源更少

当然,MVC开发模式并不是只适用于网页开发,下面的DEMO也是MVC模式哦

MVC开发模式结构图解

利用MVC开发模式写的小DEMO

创建"Model",编写Student类作为实体对象

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

创建视图(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);
   }
}

创建Controller

public class StudentController {
   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();
   }
 
   private static Student retrieveStudentFromDatabase(){
      Student student = new Student();
      student.setName("Robert");
      student.setRollNo("10");
      return student;
   }
}

设置程序的main方法(程序入口)

public class MVCPatternDemo {
   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();
   }
 
   private static Student retrieveStudentFromDatabase(){
      Student student = new Student();
      student.setName("Robert");
      student.setRollNo("10");
      return student;
   }
}

执行程序,输出结果为
Student:
Name: Robert
Roll No: 10
Student:
Name: John
Roll No: 10

Q.E.D.