DAO模式的应用
1.StudenDaoListImpl.java与StudentDaoArrayImpl.java有何不同?
前者StudenDaoListImpl.java通过链表来实现功能,而后者StudentDaoArrayImpl.java使用的是数组
2. StudentDao.java文件是干什么用的?为什么里面什么实现代码都没有?
StudentDao.java文件定义了StudentDao接口,而接口只规定了类的功能,而具体功能的如何实现,则需要在类中具体编写相应的代码。
3.使用搜索引擎搜索“Java DAO”,选出几句你能看懂的、对你最有启发的话。请结合接口知识去理解。
1、隔离了数据访问代码和业务逻辑代码。业务逻辑代码直接调用DAO方法即可,完全感觉不到数据库表的存在。分工明确,数据访问层代码变化不影响业务逻辑代码,这符合单一职能原则,降低了藕合性,提高了可复用性。
可以直接调用一些方法而不需要去搞懂为什么,分工明确,且不会影响到其他方面。
2、隔离了不同数据库实现。采用面向接口编程,如果底层数据库变化,如由 MySQL 变成 Oracle 只要增加 DAO 接口的新实现类即可,原有 MySQL 实现不用修改。这符合 "开-闭" 原则。该原则降低了代码的藕合性,提高了代码扩展性和系统的可移植性。
可以让代码变得更加灵活,只需要添加新的实现类即可应对数据库的变化而不需要重新改变MySQL,使得代码扩展性和灵活性增加
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模式有什么好处?
A:在建立子类的时候,具体的代码操作是根据子类自身来实现具体的方法,所以在使用不同的子类时,会使用到子类自己的方法
DAO接口可以使得可以在不同数据处理更加方便,相关代码维护与变更等也变得更加轻松容易方便,且DAO使程序层次分明,逻辑结构清晰

浙公网安备 33010602011771号