橘子味的心
标题:Java MVC模式

MVC模式表示:模型 - 视图 - 控制器模式。此模式用于分离应用程序的问题。

  • 模型(Model) - 模型表示携带数据的对象或JAVA POJO。如果其数据改变它也可以具有逻辑来更新控制器。
  • 视图(View) - 视图表示模型包含的数据的可视化层。
  • 控制器(Controller) - 控制器对模型和视图都有起作用。它控制数据流进入模型对象,并在数据更改时更新视图。它保持视图和模型分开,也是视图和模型的中间层。

实现实例

在这个实例中,将创建一个作为模式的Student对象. StudentView将是一个可以在控制台上打印学生详细信息的视图类,StudentController是负责在Student对象中存储数据并相应地更新 StudentView 视图的控制器类。

MVCPatternDemo这是一个演示类,将使用StudentController来演示MVC模式的使用。

MVC模式示例的结构如下图所示 -

第1步

创建一个模型,其代码如下 -
Student.java

  1. public class Student {
  2. private String rollNo;
  3. private String name;
  4.  
  5. public String getRollNo() {
  6. return rollNo;
  7. }
  8.  
  9. public void setRollNo(String rollNo) {
  10. this.rollNo = rollNo;
  11. }
  12.  
  13. public String getName() {
  14. return name;
  15. }
  16.  
  17. public void setName(String name) {
  18. this.name = name;
  19. }
  20. }
  21. Java

第2步

创建一个视图,其代码如下 -
StudentView.java

  1. public class StudentView {
  2. public void printStudentDetails(String studentName, String studentRollNo){
  3. System.out.println("Student: ");
  4. System.out.println("Name: " + studentName);
  5. System.out.println("Roll No: " + studentRollNo);
  6. }
  7. }
  8. Java

第3步

创建一个控制器,其代码如下 -
StudentController.java

  1. public class StudentController {
  2. private Student model;
  3. private StudentView view;
  4.  
  5. public StudentController(Student model, StudentView view){
  6. this.model = model;
  7. this.view = view;
  8. }
  9.  
  10. public void setStudentName(String name){
  11. model.setName(name);
  12. }
  13.  
  14. public String getStudentName(){
  15. return model.getName();
  16. }
  17.  
  18. public void setStudentRollNo(String rollNo){
  19. model.setRollNo(rollNo);
  20. }
  21.  
  22. public String getStudentRollNo(){
  23. return model.getRollNo();
  24. }
  25.  
  26. public void updateView(){
  27. view.printStudentDetails(model.getName(), model.getRollNo());
  28. }
  29. }
  30. Java

第4步

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

  1. public class MVCPatternDemo {
  2. public static void main(String[] args) {
  3.  
  4. //fetch student record based on his roll no from the database
  5. Student model = retriveStudentFromDatabase();
  6.  
  7. //Create a view : to write student details on console
  8. StudentView view = new StudentView();
  9.  
  10. StudentController controller = new StudentController(model, view);
  11.  
  12. controller.updateView();
  13.  
  14. //update model data
  15. controller.setStudentName("John");
  16.  
  17. controller.updateView();
  18. }
  19.  
  20. private static Student retriveStudentFromDatabase(){
  21. Student student = new Student();
  22. student.setName("Robert");
  23. student.setRollNo("10");
  24. return student;
  25. }
  26. }
  27. Java

第5步

验证输出,执行上面的代码得到以下结果 -

  1. Student:
  2. Name: Robert
  3. Roll No: 10
  4. Student:
  5. Name: John
  6. Roll No: 10
  7. Java