接口-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实现即可。业务逻辑保持不变。