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模式