Java MVC 模式
MVC 模式
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。
- Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
- View(视图) - 视图代表模型包含的数据的可视化。
- Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。
实现
我们将创建一个作为模型的 Student 对象。StudentView 是一个把学生详细信息输出到控制台的视图类,StudentController 是负责存储数据到 Student 对象中的控制器类,并相应地更新视图 StudentView。
MVCPatternDemo,我们的演示类使用 StudentController 来演示 MVC 模式的用法。
步骤 1
创建模型。
1 Student.java 2 3 public class Student { 4 private String rollNo; 5 private String name; 6 public String getRollNo() { 7 return rollNo; 8 } 9 public void setRollNo(String rollNo) { 10 this.rollNo = rollNo; 11 } 12 public String getName() { 13 return name; 14 } 15 public void setName(String name) { 16 this.name = name; 17 } 18 }
步骤 2
创建视图。
1 StudentView.java 2 public class StudentView { 3 public void printStudentDetails(String studentName, String studentRollNo){ 4 System.out.println("Student: "); 5 System.out.println("Name: " + studentName); 6 System.out.println("Roll No: " + studentRollNo); 7 } 8 }
步骤 3
创建控制器。
1 StudentController.java 2 public class StudentController { 3 private Student model; 4 private StudentView view; 5 6 public StudentController(Student model, StudentView view){ 7 this.model = model; 8 this.view = view; 9 } 10 11 public void setStudentName(String name){ 12 model.setName(name); 13 } 14 15 public String getStudentName(){ 16 return model.getName(); 17 } 18 19 public void setStudentRollNo(String rollNo){ 20 model.setRollNo(rollNo); 21 } 22 23 public String getStudentRollNo(){ 24 return model.getRollNo(); 25 } 26 27 public void updateView(){ 28 view.printStudentDetails(model.getName(), model.getRollNo()); 29 } 30 }
步骤 4
使用 StudentController 方法来演示 MVC 设计模式的用法。
1 MVCPatternDemo.java 2 public class MVCPatternDemo { 3 public static void main(String[] args) { 4 5 //从数据库获取学生记录 6 Student model = retrieveStudentFromDatabase(); 7 8 //创建一个视图:把学生详细信息输出到控制台 9 StudentView view = new StudentView(); 10 11 StudentController controller = new StudentController(model, view); 12 13 controller.updateView(); 14 15 //更新模型数据 16 controller.setStudentName("John"); 17 18 controller.updateView(); 19 } 20 21 private static Student retrieveStudentFromDatabase(){ 22 Student student = new Student(); 23 student.setName("Robert"); 24 student.setRollNo("10"); 25 return student; 26 } 27 }
步骤 5
执行程序,输出结果:
本文来自博客园,作者:Bytezero!,转载请注明原文链接:https://www.cnblogs.com/Bytezero/p/15291549.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)