老师,急求关于CourseDao和CourseService两个接口有相同方法的问题的解释
我看了http://class.imooc.com/course/qadetail/50531 这个问题的解释还是不能理解为什么在CourseDao和CourseService两个接口为什么要写重复的方法,我能理解子类继承父类或者实现接口然后重写方法,再然后进行向上转型的作用和意义,不能理解的是这里为什么要有两个接口写入相同的方法,老师能不能举个例子说明下
然后在CourseDaoImpl和CourseServiceImpl这两个类重写接口的方法时是不是都要重复写相同的方法逻辑,为什么呢
正在回答
举个简单的例子,就拿咱们的作业来举例子,分为了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层只负责简单的增删改查。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10205 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星