MVC模式代表模型-视图-控制器模式。此模式用于分离应用程序的关注点。
模型(Model) - 模型表示承载数据的对象或JAVA POJO,如果其数据发生更改,它也可以具有更新控制器的逻辑。
视图(View) - 视图表示模型包含的数据的可视化。
控制器(Controller) - 控制器同时作用于模型和视图,它控制数据流入模型对象并在数据更改时更新视图,它将视图和模型分开。
无涯教程将创建一个充当模型的 Student 对象。 StudentView 是一个视图类,可以在控制台上打印学生详细信息,而 StudentController 是负责将数据存储在 Student 对象中并相应地更新视图 StudentView 的控制器类。
演示类 MVCPatternDemo 将使用 StudentController 来演示MVC模式的使用。
第1步 - 创建Student模型。
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视图。
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控制器。
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) { //从数据库中获取学生记录 Student model = retriveStudentFromDatabase(); //创建视图:在控制台上写入学生详细信息 StudentView view = new StudentView(); StudentController controller = new StudentController(model, view); controller.updateView(); //更新模型数据 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
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)