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


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

    DAO模式是接口的一个典型应用。

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

    答:基于不同的数据存储形式给出了接口的不同实现模式, StudenDaoListImpl.java基于采用列表存储学生信息,StudentDaoArrayImpl.java基于采用数组存储学生信息

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

    答:该文件定义了接口 StudentDao ,并给出了该接口的相关方法签名

    接口中仅涉及相关方法的签名,不用给出方法的实现

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

    答:DAO 模式提供了访问关系型数据库系统所需操作的接口,将数据访问和业务逻辑分离对上层提供面向对象的数据访问接口。

    理解:把对数据库的所有操作定义成抽象方法,提供多种实现; 针对不同数据库给出DAO接口定义方法的具体实现。

    隔离了数据访问代码和业务逻辑代码。业务逻辑代码直接调用DAO方法即可,完全感觉不到数据库表的存在。分工明确,数据访问层代码变化不影响业务逻辑代码,这符合单一职能原则,降低了藕合性,提高了可复用性。

    理解:加强了模块间的独立性,避免重复代码的出现,实现数据访问与数据操作的分步独立,确保数据的安全与可读

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

    1.将三个方法和Student数据的具体访问分开,数据库的修改只要修改DAO层的访问方式就可以了,不用整个项目都进行修改。
    2.只要修改数据访问方式就可以在不同数据库平台上使用,这里使用了数组和列表两种方法访问。

    package stumanagement;
    public class Test {
    	public static void main(String[] args) {
    		Student[] students = new Student[4];
    		students[0] = new Student("Tom");
    		students[1]= new Student("Jerry");
    		students[2] = new Student("Sophia");
    		students[3] = new Student("Liu");
    		
    		
    		StudentDao sdm = new StudentDaoArrayImpl(50);//使用数组实现
    		//StudentDao sdm = new StudentDaoListImpl();//使用列表实现
    		//往后台写数据,无需考虑后台是什么(到底是数据库、文件、数组、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[4];
    		students[0] = new Student("Tom");
    		students[1]= new Student("Jerry");
    		students[2] = new Student("Sophia");
    		students[3] = new Student("Liu");
    		
    		
    		//StudentDao sdm = new StudentDaoArrayImpl(50);
    		StudentDao sdm = new StudentDaoListImpl();//使用列表实现
    		//往后台写数据,无需考虑后台是什么(到底是数据库、文件、数组、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);
    		}
    	}
    }
    
    

    5. 可选:编写一些使用DAO模式的代码。比如使用文件作为购物车存储底层。

    ​ 答:

  • 相关阅读:
    LeetCode 8 有效的括号
    String源码学习
    LeetCode 7最长公共前缀
    LeetCode 5回文数
    LeetCode 6罗马数字转整数
    LeetCode 4.反转整数
    LeetCode 3.无重复字符的最长子串
    区分子串和子序列
    LeetCode 1.两数之和
    一个十分好用的动画工具:Velocity.js
  • 原文地址:https://www.cnblogs.com/LIUHUAIYU/p/13868093.html
Copyright © 2020-2023  润新知