老师,急求关于CourseDao和CourseService两个接口有相同方法的问题的解释

老师,急求关于CourseDao和CourseService两个接口有相同方法的问题的解释

我看了http://class.imooc.com/course/qadetail/50531   这个问题的解释还是不能理解为什么在CourseDao和CourseService两个接口为什么要写重复的方法,我能理解子类继承父类或者实现接口然后重写方法,再然后进行向上转型的作用和意义,不能理解的是这里为什么要有两个接口写入相同的方法,老师能不能举个例子说明下

然后在CourseDaoImpl和CourseServiceImpl这两个类重写接口的方法时是不是都要重复写相同的方法逻辑,为什么呢

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

举个简单的例子,就拿咱们的作业来举例子,分为了Servlet,service,dao 三层,

首先Servlet主要用来接收jsp传过来的参数等,在Servlet中创建一个service的实现类对象。通过调用service的实现类对象来调用service实现类中的方法,同理在service中创建一个dao的实现类对象。通过调用在dao的实现类对象来调用dao实现类中的方法。

同学可能疑惑点在为什么不直接调用dao的实现类呢?

以后我们会用到数据库。我们一般在dao实现类的方法中去从数据库中查询数据。而我们现在就通过作业中的map来代替数据库。

如果,我们需要做一些比较复杂的逻辑判断,都写在dao层中或者Servlet会很乱。代码的耦合度太高

比如,我们需要通过id查询到了Food。此时,店铺要求,如果查到的菜品名字是麻辣牛肉,那么价格打八折。

让Servlet去接收id,并调用service中的方法去查询。service调用dao层的方法去查询。

那我们就让dao层专门负责通过id查询Food,

查回来之后返回给service,我们就要在service中判断了,dao层给我们的Food的名字是不是麻辣牛肉呀,如果是,我给它改一下价格再返回给Servlet。

这个例子中,价格打折只是简单的业务逻辑,如果很复杂呢?所以我们把这样的业务逻辑放在service层的方法中处理后,再调用dao层的方法或者再返回给Servlet层。

这样,如果我们有业务逻辑需要,直接去service层改就可以了,而dao层只负责简单的增删改查。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

北斗神拳1984 2018-06-29 10:44:03

这是设计层面的问题,我也问过这个问题,Dao层(数据访问层)和Service(业务层)层是两个不同的层,项目中我们会分层设计,都会设计成接口,Service层会调用Dao层的方法,后面带Impl的就是实现这两个接口的类,也是我们实际在servlet里调用的类,你做完这个作业,再学习到后面的课程会有更多的体会。

  • 提问者 shine6632 #1
    最后是创建dao层对象来调用dao层里面的方法,那么在服务层service里也创建相同的方法的意义到底是什么,又不需要调用到为什么要创建呢
    2018-06-29 11:55:43
  • 北斗神拳1984 回复 提问者 shine6632 #2
    服务层service也是一个接口,CourseServiceImpl这个才是实现类,DAO也是一个接口,CourseDaoImpl才是实现类,然后在CourseServiceImpl调用CourseDaoImpl,不是dao层对象来调用dao层里面的方法,dao层实现类来实现dao层接口里的方法,你要先弄懂接口和类的关系。
    2018-06-29 12:24:43
  • 提问者 shine6632 回复 北斗神拳1984 #3
    我知道类实现接口,也知道知道是在CourseServiceImpl里调用CourseDaoImpl,我想知道的是service里面创建的方法是什么时候被调用到的,如果不被调用到为什么要创建呢
    2018-06-29 12:36:07
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师