互评-OO之接口-DAO模式代码阅读及应用

1.StudenDaoListImpl.java与StudentDaoArrayImpl.java有何不同?

这个StudenDaoListImpl.java使用List存储学生信息,而StudentDaoArrayImpl.java使用数组。

主要有以下不同:

  1. 数据存储方式的不同。List是动态数组,可以根据需要自动扩容,而数组的大小是固定的。在数据量较大时,List可能会消耗更多的内存。

  2. 遍历方式的不同。List可以使用for-each和迭代器来遍历,而数组只能使用for循环遍历。

  3. 添加元素的方式的不同。List add方法可以直接添加元素,而数组必须通过索引赋值的方式添加元素。

  4. 查询元素的方式的不同。List可以使用get方法根据索引查询元素,而数组必须使用下标查询元素。但是对于按照姓名查询学生的需求,两种实现方式都可以实现。

2.StudentDao.java文件是干什么用的?为什么里面什么实现代码都没有? 

1)StudentDao.java文件是一个接口文件,用于定义学生数据访问对象(DAO)的功能。它定义了三个抽象方法:addStudent、getStuByName 和 diplayAllStudents,用于添加学生、按姓名查询学生和展示所有学生信息。

2)因为接口文件的作用是规定了实现该接口的类应该具备哪些方法,并提供了方法的声明,不提供具体的实现代码,接口本身只是一种契约或规定,不包含具体的实现逻辑。具体的实现代码将在实现该接口的类中提供。所以在StudentDao接口中看不到具体的实现代码。

3.使用搜索引擎搜索“Java DAO”,选出几句你能看懂的、对你最有启发的话。请结合接口知识去理解。

将接口与实现相分离 :DAO只声明方法,具体实现不提供,可以自己通过多种方式来实现。

4.尝试运行Test.java。根据注释修改相应代码。结合参考代码回答使用DAO模式有什么好处?

ackage 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 studentDao = new StudentDaoArrayImpl(50); // 使用数组实现
        // StudentDao studentDao = new StudentDaoListImpl(); // 使用列表实现
        
        // 往后台写入数据,无需考虑后台是什么(到底是数据库、文件、数组、List)
        // 因为这里是面向StudentDao接口
        System.out.println("===========写入学生========");
        for (Student student : students) {
            if (!studentDao.addStudent(student)) {
                System.out.println("添加学生失败");
            } else {
                System.out.println("插入成功!!");
            }
        }
        System.out.println("===========显示所有学生========");
        studentDao.displayAllStudents();
        
        System.out.println("===========查询学生========");
        Student temp = studentDao.getStudentByName("Tom");
        if (temp == null) {
            System.out.println("查无此人");
        } else {
            System.out.println(temp);
        }


    }

}
  1. 通过使用DAO接口和具体实现类,将数据访问逻辑从业务逻辑中分离出来,使得代码更加清晰和模块化。在Test.java中,可以根据需要选择使用不同的StudentDao实现类,如StudentDaoArrayImpl和StudenDaoListImpl。这样,只需要调用相应的DAO方法。

  2. 提供数据访问的统一接口。无论使用数组实现(StudentDaoArrayImpl)还是列表实现(StudenDaoListImpl),Test.java中的数据写入和查询操作都通过调用StudentDao接口中定义的方法来完成。这样可以统一管理和封装数据访问操作,提高代码的可读性和可维护性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值