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

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

答:StudenDaoListImpl.java是列表来储存学生的基本信息,而StudentDaoArrayImpl.java是用
数组来储存学生的基本信息,但基本操作有所不同。tudentDaoArrayImpl.java实现getStuByName和
addStudent的方法时要判断student是否位为null的情况,而StudenDaoListImpl.java则不需要。

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

答:StudentDao.java定义了StudentDao接口,里面有对学生的信息处理的三个方法,因为实现的方法可以在其他类中实现。
这里进行了三个方法的声明。

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

句子:DAO隔离业务逻辑代码和数据访问代码。

答:因为DAO模式将代码块分为数据存储部分和数据访问部分两大块。DAO接口中有对数据处理相关方法的声明。而实现的代码中不在
接口中出现,有利于数据的封装,也有利于代码的修改。

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

1.数组实现:

package com.Hellow.java;

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)
		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);
		}


	}

}

运行截图:

2:链表实现

package com.Hellow.java;

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);
		}


	}

}

运行截图:

优点1:

将业务逻辑于数据的具体访问相分离,可以根据后台的数据存储方式,定义不同的实现,比如所给出的代码中当后台数据
存储方式是数组时用StudentDao sdm = new StudentDaoArrayImpl(50)实现,当后台数据存储方式是列表时。
用StudentDao sdm = new StudenDaoListImpl()实现

优点2:

如果要对代码修改只要修改DAO层的访问方式就可以了,不用整个代码都进行修改。

posted @ 2020-10-25 18:54  JYangYang  阅读(83)  评论(0编辑  收藏  举报