当前位置: 首页 > article >正文

27-Java MVC 模式

Java空对象模式

    • 实现
    • 范例

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

实现

在这里插入图片描述

  • 定义一个作为模型的Student对象;
  • StudentView是一个把学生详细信息输出到控制台的视图类;
  • StudentController是负责存储数据到Student对象中的控制器类,并相应地更新视图StudentView;
  • 最后类MVCPatternDemo使用StudentController来演示MVC模式的用法;

范例

1. 定义模型

Student.java

package com.demo.gof;
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.java

package com.demo.gof;
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.java

package com.demo.gof;
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

package com.demo.gof;
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;
   }
}

编译运行以上 Java 范例,输出结果如下

$ javac -d . src/main/com.demo/gof/MVCPatternDemo.java
$ java  com.demo.gof.MVCPatternDemo
Student: 
Name: Robert
Roll No: 10
Student: 
Name: John
Roll No: 10



http://www.kler.cn/a/272677.html

相关文章:

  • 编程工具箱(免费,离线可用)
  • 使用Pydantic驾驭大模型
  • Linux之文件系统前世今生(一)
  • vue3学习三
  • 2025.1.16——三、supersqli 绕过|堆叠注入|handler查询法|预编译绕过法|修改原查询法
  • 关于vite+vue3+ts项目中env.d.ts 文件详解
  • WebRTC实现一对多直播模式和弹幕发送功能
  • 【机器学习】无监督学习:解锁数据中的潜在结构与关系
  • rsa数据加密无大小限制——golang实现
  • 华为认证大数据工程师(HCIA-Big Data)--填空题
  • 回到街头 - 数字时尚嘉年华:Web3的时尚未来,4月香港兰桂坊盛大启幕
  • SSM框架,MyBatis-Plus的学习(下)
  • 代码+视频,R语言使用BOOT重抽样获取cox回归方程C-index(C指数)可信区间
  • 闯关升级游戏特点,闯关小程序游戏开发
  • acwing算法提高之搜索--剪枝
  • Verilog中`include的用法
  • 网络面试题整理
  • VisualStudio的使用
  • java数据结构与算法刷题-----LeetCode55. 跳跃游戏
  • 组件化开发
  • 视频桥接芯片#LT8912B适用于MIPIDSI转HDMI+LVDS应用方案,提供技术支持。
  • 算法——贪心
  • 中霖教育好吗?口碑怎么样?
  • JavaWeb:vue、AJax、ELement、maven、SpringBoot、、Http、Tomcat、请求响应、分层解耦
  • Tailwind CSS如何使用
  • 探寻未来之路:计算机行业发展趋势与机遇