1. StudenDaoListImpl.java 与 StudentDaoArrayImpl.java 有何不同?
-
StudenDaoListImpl 使用 ArrayList
存储学生对象,可以动态扩容,无需指定初始大小。 -
StudentDaoArrayImpl 使用固定长度的 Student[] 数组存储学生对象,需要在构造时指定数组大小,且可能因数组满而导致添加失败。
2. StudentDao.java 文件是干什么用的?为什么里面什么实现代码都没有?
-
StudentDao.java 是一个 接口(Interface),它定义了一组规范(方法签名),如 addStudent、getStuByName、diplayAllStudents。
-
接口中不包含实现代码,是因为它只规定“做什么”,而不规定“怎么做”。具体的实现由实现类(如 StudenDaoListImpl、StudentDaoArrayImpl)去完成。
3.使用搜索引擎搜索“Java DAO”,选出几句你能看懂的、对你最有启发的话。请结合接口知识去理解。
-
“DAO(Data Access Object)模式将业务逻辑与数据访问逻辑分离,使得代码更易于维护和扩展。”
-
“通过DAO接口,我们可以轻松切换不同的数据存储方式(如数据库、文件、内存),而不影响上层业务代码。”
-
“DAO模式提高了代码的可测试性,我们可以通过Mock实现来模拟数据访问层。”
-
启发:DAO 模式通过接口抽象了数据访问操作,使得我们可以灵活地更换底层存储实现,而无需修改业务逻辑代码。
4. 运行 Test.java,结合代码回答使用DAO模式有什么好处?
运行方式:
-
使用数组实现:StudentDao sdm = new StudentDaoArrayImpl(50);
-
使用列表实现:StudentDao sdm = new StudenDaoListImpl();
DAO模式的好处:
-
解耦:业务层(Test)不关心数据是如何存储的,只关心接口方法。
-
可扩展:可以轻松切换不同的存储实现(数组、List、数据库等)。
-
可维护:数据访问逻辑集中在一个地方,便于修改和测试。