课程表

设计模式课程

工具箱
速查手册

MVC 模式

当前位置:免费教程 » Java相关 » 设计模式

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

  • Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
  • View(视图) - 视图代表模型包含的数据的可视化。
  • Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

实现

我们将创建一个作为模型的 Student 对象。StudentView 是一个把学生详细信息输出到控制台的视图类,StudentController 是负责存储数据到 Student 对象中的控制器类,并相应地更新视图 StudentView

MVCPatternDemo,我们的演示类使用 StudentController 来演示 MVC 模式的用法。

MVC 模式的 UML 图

步骤 1

创建模型。

Student.java

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

步骤 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. }

步骤 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. }

步骤 4

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

MVCPatternDemo.java

  1. public class MVCPatternDemo {
  2. public static void main(String[] args) {
  3.  
  4. //从数据可获取学生记录
  5. Student model = retriveStudentFromDatabase();
  6.  
  7. //创建一个视图:把学生详细信息输出到控制台
  8. StudentView view = new StudentView();
  9.  
  10. StudentController controller = new StudentController(model, view);
  11.  
  12. controller.updateView();
  13.  
  14. //更新模型数据
  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. }

步骤 5

验证输出。

Student: 
Name: Robert
Roll No: 10
Student: 
Name: John
Roll No: 10
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号