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


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

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

    阅读附件中的参考代码:

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

    • 二者的数据存储方式不同,对应方法的实现也不同。StudentDaoListImpl.java中采用List存储,而StudentDaoArrayImpl.java是采用数组形式存储的。二者相比较,用List存储数据,代码会比较简洁。

    • 例如:public boolean addStudent(Student student)这个方法下,采用List的代码直接调用已有的库函数add进行增加人数,而数组需要采用循环遍历判断是否存在这个数据。

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

    • 用处:StudentDao是一个接口,用于存放业务逻辑,主要让处理及操作资料库更为方便,可以在其他的类中实现。编写接口的方式和类很相似,但接口并不是类,属于不同的概念,类描述对象的属性和方法,接口则包含类要实现的方法,且接口中的方法都是公有的。
    • 原因:接口中定义的方法,可以在不同的类中有不同的实现方法。他只是确定了方法,但对于具体的实现中,不同的对象实现这个行为的方法也是不同的。

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

    DAO是指位于业务逻辑和持久化数据之间实现对持久化数据的访问。通俗来讲,就是将数据库操作都封装起来。

    • DAO模式实现两次隔离

      • 隔离数据访问代码和业务逻辑代码。业务逻辑代码可以直接调用DAO方法,不影响业务逻辑代码。当接口决定后一般是不变的,我们在使用的时候传参都是一样的,等于说实现的功能是一样的。所以不用担心存储类型之类的问题。
      • 隔离不同数据库的实现。当后续如果数据库有变动,我们不需要对原先的数据库进行修改,可以直接添加一个实现类。在使用是时候,只需要用到对应的实现方法就可以,这也提高了提高了代码扩展性。
    • DAO模式组成

      • DAO接口:把对数据库的所有操作定义成抽象方法,可以提供多种实现

        可以理解为是一些行为和合集。例如在购物车中,添加删除商品,计算商品总价的时候,可以将这个接口方法确定,之后再用这个接口实现功能。

      • DAO实现类:具体实现

      • 实体类:用于存放与传输对象数据

      • 数据库连接和关闭工具类

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

    • 使用数组实现(修改前)

      代码如下:

      运行结果:

    • 使用列表实现(修改后)

      代码如下:

      运行结果:

    • 通过代码修改前后,可以看出他们实现是不同的,但是他们的输出结果是一样的。

    • DAO模式好处:

      • 在写数据的时候,可以不用考虑后台的数据是什么结构。只需要修改数据访问的方式就可以再不同的接口上使用。
      • DAO将业务逻辑和数据处理分开,可以使代码便捷化。
      • 例如在这个代码中,在StudentDaoArrayImpl和StudenDaoListImpl两个类中使用ArrayList和数组进行存储数据,但都实现了studentDo接口,无需去修改代码

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

        public boolean add(Commodity e,int count);//加入购物车
    	public boolean remove(Integer id);//将商品移除
    	public void diplayAll();//输出购物车内商品条目
    	public double checkout();//输出总金额
    	public boolean delete(Integer id);//删除条目
    

    参考视频:5.4 案例:DAO模式

  • 相关阅读:
    利用书签栏作插入时失败告终
    组以逗号分隔的子串及跨平update join
    ms_sql:drop and create a job
    why dicePlayer cannot player with defy mb526
    好像国庆三天是可以加班工资计了
    msssql 用numberic(38)替代int去解决int不够的问题
    C#的switch与二维数组.....
    某牛人所留的联系方式
    封装对象类
    数据库访问小列题
  • 原文地址:https://www.cnblogs.com/GGGa-Yi/p/15415923.html
Copyright © 2020-2023  润新知