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

接口-DAO模式

 1.代码比较

1.1StudenDaoListImpl.java与StudentDaoArrayImpl.java有何不同?

(1)StudentDaoArrayImpl.java是通过数组实现相关功能,StudenDaoListImpl.java是通过列表实现相关功能

//StudentDaoArrayImpl.java
private Student[] students;
//.StudenDaoListImpl.java
private List<Student> students = new ArrayList<Student>();

(2)利用数组实现addStudent()时需要遍历数组逐一判断并添加,利用列表实现则直接调用add方法

//StudentDaoArrayImpl.java
public boolean addStudent(Student student) {boolean success = false;for(int i=0; i<students.length;i++){if(students[i]==null){students[i] = student;success = true;break;}}return success;}
//StudenDaoListImpl.java
public boolean addStudent(Student student) {students.add(student);return true;}

2.DAO模式

2.1.StudentDao.java文件是干什么用的?为什么里面什么实现代码都没有?

(1)StudentDao接口包含了addStudent,getStuByName,diplayAllStudents方法的声明

(2)StudentDao接口告诉实现该接口的类必须提供哪些功能,而不是具体怎么去实现这些功能

2.2使用搜索引擎搜索“Java DAO”,选出几句你能看懂的、对你最有启发的话。请结合接口知识去理解

在Java中,DAO(Data Access Object)模式是一种用于将底层的数据访问逻辑与业务逻辑分离的设计模式。它提供了一种抽象层,使得应用程序可以更加灵活地处理数据存储,而不必关心具体的数据源是如何实现的。

(1)使用接口定义DAO,可以让你在不改变现有代码的情况下更改数据存储的方式。例如,你可能开始时使用内存中的集合来存储学生信息,后来决定改用数据库。

(2)接口提供了一种契约,任何实现了这个接口的类都必须提供相应的方法实现。

2.3尝试运行Test.java。根据注释修改相应代码。结合参考代码回答使用DAO模式有什么好处?

(1)用数组或列表得到的结果相同

StudentDao sdm = new StudentDaoArrayImpl(50);//使用数组实现
StudentDao sdm = new StudenDaoListImpl();//使用列表实现

(2)DAO模式将业务逻辑与数据访问逻辑分开,提高了代码的清晰度和可维护性。

(3)可以减少代码的重复率,DAO模式鼓励重用数据访问代码。一旦为某种类型的数据定义了DAO接口及其实现,就可以在多个地方复用这个实现。

(4)易于替换数据源,如果你需要从一种数据源切换到另一种(比如从内存数据库切换到关系型数据库),只需更改DAO实现即可。业务逻辑保持不变。

http://www.xdnf.cn/news/4939.html

相关文章:

  • 65.微服务保姆教程 (八) 微服务开发与治理实战
  • 车载网络TOP20核心概念科普
  • Go使用Gin写一个对MySQL的增删改查服务
  • JS 问号(?)运算符避免中间报错
  • VNC windows连接ubuntu桌面
  • 涨薪技术|0到1学会性能测试第52课-Tomcat调优技术
  • 从回调到 Promise:异步编程进化史
  • 数据库(MySQL)基础
  • 【Python】Python项目中的依赖与配置:requirements.txt、setup.py、pyproject.toml 详解
  • git cola如何选择指定的多个commit同时合并到另外一个分支上
  • vscode与keil的乱码不兼容问题
  • 3.2.3 掌握RDD转换算子 - 3. 扁平映射算子 - flatMap()
  • matlab稳定求解高精度二维对流扩散方程
  • ​​​​​​​MySQL数据库故障排查指南
  • springboot+vue实现在线网盘(云盘)系统
  • Open CASCADE学习|Geom2d_Curve类
  • c语言if else语句格式(非常详细)
  • 管道符_+xargs拓展参数传递操作,以及find指令
  • 真相与幻象的博弈:AI“幻觉”的生成密码与治理革命
  • 稀疏数组在组合优化中的典型应用场景
  • 数据透视表控件DHTMLX Pivot v2.1发布,新增HTML 模板、增强样式等多个功能
  • 快速上手知识图谱开源库AmpliGraph教程指南(二)
  • 深入探索 JavaScript 中的模块对象
  • 算法中的数学:约数
  • 【嵌入式开发-xxxxx】
  • 基于51单片机的步进电机控制系统—正/反转、加/减速
  • HarmonyOS-hdc远程网络方式连接设备
  • PVP鼠标推荐(deepseek)
  • leetcode 242. Valid Anagram
  • 技术视界 | 青龙机器人训练地形详解(三):复杂地形精讲之台阶