接口——DAO模式代码阅读及应用
1. StudenDaoListImpl.java与StudentDaoArrayImpl.java有何不同?
答:StudenDaoListImpl.java是用链表存储学生信息,StudentDaoArrayImpl.java是用数组存储学生信息。
2. StudentDao.java文件是干什么用的?为什么里面什么实现代码都没有?
答:在StudentDao.java文件中定义了一个StudentDao接口,里面有三个方法的声明。接口只规定了类应该具有哪些功能,具体的功能要在实现它的类中实现。StudenDaoListImpl与StudentDaoArrayImpl就是两个接口,main函数可以直接通过接口来调用其中的方法。如果StudenDaoListImpl或StudentDaoArrayImpl中的方法需要进行修改,那就直接在StudenDaoListImpl或StudentDaoArrayImpl中进行修改就好了,而main函数不需要进行修改。
3. 使用搜索引擎搜索“Java DAO”,选出几句你能看懂的、对你最有启发的话。请结合接口知识去理解。
(1)DAO是Data Access Object数据访问接口,数据访问:故名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。
(2)DAO层一般有接口和该接口的实现类,接口用于规范实现类,实现类一般用于用于操作数据库! 一般操作修改,添加,删除数据库操作的步骤很相似,就写了一个公共类DAO类 ,修改,添加,删除数据库操作时直接调用公共类DAO类。
(3)优点是隔离了数据访问代码和业务逻辑代码和隔离了不同数据库实现。
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);
}
}
}
链表实现:
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);
}
}
}
好处:修改时只要修改DAO的访问模式,不再需要在数据库中建立表之间的复杂联系,使得业务对象之间的关系和数据库相分离,简化了数据库的建立和维护。