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模式的数据库连接和关闭工具类避免了数据库连接和关闭代码的重复使用,方便修改。

相关文章
|
12天前
|
人工智能 算法 Java
Java与AI驱动区块链:构建智能合约与去中心化AI应用
区块链技术和人工智能的融合正在开创去中心化智能应用的新纪元。本文深入探讨如何使用Java构建AI驱动的区块链应用,涵盖智能合约开发、去中心化AI模型训练与推理、数据隐私保护以及通证经济激励等核心主题。我们将完整展示从区块链基础集成、智能合约编写、AI模型上链到去中心化应用(DApp)开发的全流程,为构建下一代可信、透明的智能去中心化系统提供完整技术方案。
131 3
|
13天前
|
Java Go 开发工具
【Java】(9)抽象类、接口、内部的运用与作用分析,枚举类型的使用
抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽象方法不能有方法体。抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。抽象类可以包含成员变量、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类(接 口、枚举)5种成分。抽象类的构造器不能用于创建实例,主要是用于被其子类调用。抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类abstract static不能同时修饰一个方法。
146 0
|
14天前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
72 8
|
22天前
|
算法 安全 Java
除了类,Java中的接口和方法也可以使用泛型吗?
除了类,Java中的接口和方法也可以使用泛型吗?
78 11
|
27天前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
258 12
|
1月前
|
安全 Java API
Java SE 与 Java EE 区别解析及应用场景对比
在Java编程世界中,Java SE(Java Standard Edition)和Java EE(Java Enterprise Edition)是两个重要的平台版本,它们各自有着独特的定位和应用场景。理解它们之间的差异,对于开发者选择合适的技术栈进行项目开发至关重要。
153 1
|
2月前
|
设计模式 XML 安全
Java枚举(Enum)与设计模式应用
Java枚举不仅是类型安全的常量,还具备面向对象能力,可添加属性与方法,实现接口。通过枚举能优雅实现单例、策略、状态等设计模式,具备线程安全、序列化安全等特性,是编写高效、安全代码的利器。
|
2月前
|
存储 缓存 安全
Java集合框架(二):Set接口与哈希表原理
本文深入解析Java中Set集合的工作原理及其实现机制,涵盖HashSet、LinkedHashSet和TreeSet三大实现类。从Set接口的特性出发,对比List理解去重机制,并详解哈希表原理、hashCode与equals方法的作用。进一步剖析HashSet的底层HashMap实现、LinkedHashSet的双向链表维护顺序特性,以及TreeSet基于红黑树的排序功能。文章还包含性能对比、自定义对象去重、集合运算实战和线程安全方案,帮助读者全面掌握Set的应用与选择策略。
186 23
|
13天前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
62 1
|
13天前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
54 1