接口-DAO模式代码阅读及应用

接口-DAO模式代码阅读及应用

1.StudentDaoListImpl.java与StudentDaoArrayImpl.java有何不同?

StudenDaoListImpl.java是用列表的方式存储学生信息,StudentDaoArrayImpl.java是用数组来存储学生信息。两者在查找和添加两个方法有所不同,查找:StudenDaoListImpl.java从头开始判断名字是否相同,StudentDaoArrayImpl.java先要判断该元素不为空,在判断名字是否相同;添加:StudenDaoListImpl.java直接用列表的add方法在列表末尾添加,StudentDaoArrayImpl.java是从头开始找空的元素,将其存放进去。两者的显示方法差不多。

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

定义一个StudentDao接口,里面有三个方法的声明,其他类通过继承StudentDao类,实现StudentDao.java文件中的方法,子类可以有着相同的三个方法声明,不同的子类也可以根据不同的要求写出不一样的方法代码。

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

接口-DAO模式代码阅读及应用

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

package stumanagement;

public class Test {
   

	public static void main(String[] args) {
   
		Student[] students = new Student[3];
		students[0] = new Student("Tom");
		students[1]= new Student("Jerry");
		students[2] = new Student("Sophia");

		
		StudentDao sdm = new StudentDaoArrayImpl(50);//使用数组实现
		//StudentDao sdm = new StudenDaoListImpl();//使用列表实现
		
		//往后台写数据,无需考虑后台是什么(到底是数据库、文件、数组、List)
		//因为这里是面向StudentDao接口
		System.out.println("===========写入学生========");
		for(Student e:students){
   
			if (!sdm.addStudent(e)){
   
				System.out.println("添加学生失败");
			}else{
   
				System.out.println("插入成功!!");
			}
		}
		System.out.println("===========显示所有学生========");
		sdm.diplayAllStudents();
		System.out.println("===========查询学生========");
		Student temp = sdm.getStuByName("Tom") ;
		if(temp == null){
   
			System.out.println("查无此人");
		}else{
   
			System.out.println(temp);
		}


	}

}

两个类都继承了StudentDao,运行结果相同。

好处:

通过StudentDao接口,可以创建两个不同的子类sdm,进行插入,查找,显示学生信息。两个子类通过不同的代码实现StudentDao接口里的方法,使得两个子类的运行结果都相同。

1.数据存储逻辑的分离:一方面避免业务代码中混杂的JDBC代码,另一方面,数据访问接口与数据访问实现相分离,这样精通数据库的人可以根据接口专注于数据库访问的最优化实现,而精通业务的人可以专注于业务逻辑编码。

2.数据访问底层实现的分离:DAO模式将数据访问分为抽象层和实现层,分离了数据使用和数据访问的底层实现细节。这样可以在保持上层结构不变的情况下,通过更改底层实现来修改数据访问的机制,比如只要通过修改数据访问层实现,我们就可以部署在不同数据库平台上。

5.可选:编写一些使用DAO模式的代码。比如使用文件作为购物车存储底层。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114441.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据库设计之概念结构设计工具_数据库关系设计

    数据库设计之概念结构设计工具_数据库关系设计概念模型将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程就是概念结构设计概念模型的特点(1)能真实、充分地反映现实世界,是现实世界的一个真实模型。(2)易于理解,从而可以用它和不熟悉计算机的用户交换意见。(3)易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充。(4)易于向关系、网状、层次等各种数据模型转换描述概念模型的工具E-R模型E-R模型1.实体之间的联系(1)两个实体型之间的联系:①一对一联系(1∶1)②一对多联系(1∶n)③多对多联系(m∶n)

    2022年10月12日
  • ICMP报文详解之ping实现「建议收藏」

    ICMP报文详解之ping实现「建议收藏」ping是向网络主机发送ICMP回显请求(ECHO_REQUEST)分组,是TCP/IP协议的一部分。主要可以检查网络是否通畅或者网络连接速度快慢,从而判断网络是否正常。ping命令底层使用的是ICMP,ICMP报文封装在ip包里。它是一个对IP协议的补充协议,允许主机或路由器报告差错情况和异常状况。ICMP报文格式和各个字段的含义…

    2022年5月8日
  • 【PMP】PMBOK第六版项目管理5大过程组10大知识领域知识点汇总

    前后准备考试,历时一个月时间,最终完美pass第一章项目管理框架第二章、项目运行环境第三章项目经理的角色第四章、项目整合管理第五章项目范围管理第六章项目进度管理第七章项目成本管理第八章、项目质量管理第九章、项目资源管理第十章项目沟通管理第十一章项目风险管理第十二章、项目采购管理第十三章、项目相关方管理必须记住的知识点:规划成…

    2022年4月8日
  • TCP/IP TIME_WAIT状态原理 (转)

    TCP/IP TIME_WAIT状态原理 (转)

    2021年8月31日
  • cefsharp设置cookie,CefSharp如何存储Cookie

    cefsharp设置cookie,CefSharp如何存储CookieIcan’tgetcookiestosaveinCefSharp.HereiswhatItried:CefSettingssettings=newCefSettings();stringpath=Environment.GetFolderPath(Environment.SpecialFolder.Desktop);Cef.Initialize(newCefS…

    2022年9月18日
  • java版我的世界_我的世界Java版1.16[通俗易懂]

    java版我的世界_我的世界Java版1.16[通俗易懂]我的世界Java版1.16是我的世界的特殊版本,这个版本的我的世界深受玩家们的喜欢,小编为各位玩家带来了最新的我的世界Java版1.16手机版本,不仅游戏内容在一定程度上丰富十足,画面打造也非常的精美,玩过的小伙伴都赞不绝口,喜欢的玩家就来下载吧!我的世界Java版1.16游戏说明JAVA版JAVA版应该算是玩家接触到的最广的版本,也是游戏内容最丰富的版本。事实上,JAVA版本就是PC版,是我的世…

    2022年7月7日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号