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

简介: Java-OO接口-DAO模式代码阅读及应用

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

定义不同实现,两者功能相同但储存的方法不同。


1.StudentDaoArrayImpl.java:后台存储是用数组存储的时候,可以定义一个StudentDaoArrayImpl来专门来实现StudentDao;


2.StudenDaoListImpl.java:如果后台是用列表来实现可以定义另外一个类StudenDaoListImpl来实现。


这样可以轻松切换这两种存储模式。


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

义业务逻辑:读写数据等一些接口。StudentDao.java文件是用于接口的声明。StudentDao.java文件中定义了一个名为StudentDao的接口,里面存放着三个方法声明。其他类可以通过继承来实现StudentDao.java文件中的方法,不同的子类根据不同的数据、不同的存储方式写出不一样的方法代码。这样处理可以实现将接口声明与实现相分离,从而大大提高程序的灵活性。


因为接口只规定了功能和使用方法,具体的实现要在子类中进行,在不同的实现类中进行不同的编码实现,即具体代码的实现要根据具体情况而定,根据需要进行代码的实现。故在接口中没有任何实现代码。


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


DAO (DataAccessobjects 数据存取对象)是指位于业务逻辑和持久化数据之间实现对持久化数据的访问。


理解:DAO模式将数据库操作都封装起来,将数据访问和业务逻辑分离,提供面向对象的数据访问接口。其通过定义接口,然后让不同的类来实现该接口,可以将对数据的操作封装起来,从外部来看,对数据的操作都是一样的,但是在类的内部对数据的操作往往都有所不同。


隔离了不同数据库实现。


理解:采用面向接口编程,分离开来便于管理,方便代码的编写。当使用的数据库发生变化时,只需要根据接口实现一个操作新的数据库的新类即可,而无需对原有的类进行修改,降低了代码的藕合性,提高了代码扩展性和系统的可移植性,具有可读性。


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


第一:隔离了数据访问代码和业务逻辑代码。在Test.java的main方法中,只需要调用addStudent、getStuByName、diplayAllStudents即可实现对student数据的增添、获取和打印功能,而无须具体了解是如何访问到这些数据的。


第二:分工明确,数据访问层代码变化不影响业务逻辑代码,提高了可复用性,隔离了不同数据库实现。参考代码中StudentDaoArrayImpl和StudenDaoListImpl两个类均实现了StudentDao接口,它们具有相同的方法,但是它们具体存储数据的形式不同,想要使用哪种数据存储方式就注释掉另外一种即可,而无须修改数据访问代码。

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

第三:降低了代码的藕合性,提高了代码扩展性和系统的可移植性。


第四:DAO接口把对数据库的所有操作定义成抽象方法,可以提供多种实现,实现了接口声明与实现的分离;而在DAO 的实现类中针对不同数据库给出DAO接口定义方法的具体实现;DAO模式的数据库连接和关闭工具类避免了数据库连接和关闭代码的重复使用,方便修改。

相关文章
|
3天前
|
Java 编译器 开发者
Java中的this关键字详解:深入理解与应用
本文深入解析了Java中`this`关键字的多种用法
29 9
|
3天前
|
Java 应用服务中间件 API
【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析
本文介绍了 Spring Boot 的核心概念和使用场景,并通过一个实战项目演示了如何构建一个简单的 RESTful API。
22 5
|
3天前
|
人工智能 自然语言处理 搜索推荐
【潜意识Java】了解并详细分析Java与AIGC的结合应用和使用方式
本文介绍了如何将Java与AIGC(人工智能生成内容)技术结合,实现智能文本生成。
23 5
|
3天前
|
SQL Java 数据库连接
【潜意识Java】深入理解MyBatis,从基础到高级的深度细节应用
本文详细介绍了MyBatis,一个轻量级的Java持久化框架。内容涵盖MyBatis的基本概念、配置与环境搭建、基础操作(如创建实体类、Mapper接口及映射文件)以及CRUD操作的实现。此外,还深入探讨了高级特性,包括动态SQL和缓存机制。通过代码示例,帮助开发者更好地掌握MyBatis的使用技巧,提升数据库操作效率。总结部分强调了MyBatis的优势及其在实际开发中的应用价值。
11 1
|
30天前
|
安全 算法 Java
Java CAS原理和应用场景大揭秘:你掌握了吗?
CAS(Compare and Swap)是一种乐观锁机制,通过硬件指令实现原子操作,确保多线程环境下对共享变量的安全访问。它避免了传统互斥锁的性能开销和线程阻塞问题。CAS操作包含三个步骤:获取期望值、比较当前值与期望值是否相等、若相等则更新为新值。CAS广泛应用于高并发场景,如数据库事务、分布式锁、无锁数据结构等,但需注意ABA问题。Java中常用`java.util.concurrent.atomic`包下的类支持CAS操作。
64 2
|
1月前
|
数据采集 JSON Java
利用Java获取京东SKU接口指南
本文介绍如何使用Java通过京东API获取商品SKU信息。首先,需注册京东开放平台账号并创建应用以获取AppKey和AppSecret。接着,查阅API文档了解调用方法。明确商品ID后,构建请求参数并通过HTTP客户端发送请求。最后,解析返回的JSON数据提取SKU信息。注意遵守API调用频率限制及数据保护法规。此方法适用于电商平台及其他数据获取场景。
|
1月前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
54 6
|
1月前
|
监控 Java 数据库连接
Java线程管理:守护线程与用户线程的区分与应用
在Java多线程编程中,线程可以分为守护线程(Daemon Thread)和用户线程(User Thread)。这两种线程在行为和用途上有着明显的区别,了解它们的差异对于编写高效、稳定的并发程序至关重要。
48 2
|
17天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
80 17
|
28天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者