Java Web 项目 Service、DAO 层为什么要用接口?

最近在开始学习Spring Boot,打算转后端开发。在学习过程中发现很多项目都是xxController<-xxService(接口)<-xxServiceImpl这种结构,而大部分情况针对xxService(接口)只有一种实现。

于是产生的疑问,为什么需要xxService(接口)xxController中直接使用xxServiceImpl不就好了吗?

网上看了一圈,比较认可这个看法

java web 中dao 层和service层都使用接口,是否是为使用接口而使用接口? - 小猪的回答 - 知乎
https://www.zhihu.com/question/36021012/answer/116954747

另外我对 Java Web 项目使用接口的理解:

  1. 如果使用 Spring,尽量使用面向接口编程,才能发挥 Spring IOC 作用,不用关心具体实现对象的生命周期,好处是使用方便和内存占用优化。
  2. 大项复杂的项目需要,及一个接口后面可能对应着多个不同的实现。
  3. 多人分层合作,有人负责 Controller 层,有人负责 Service 层,有人负责 DAO 层,大家可以先定义好接口然后就开始各写各的代码了,互不影响。
  4. 控制暴露给外部的内容。接口只会定义公开的部分,而如果直接使用实现对象,会看到实现对象中的私有部分,这部分可能有些是重要的涉及到安全方面的信息。

结论

我应该会按上面知乎回答的方式,根据项目、团队和管理情况来决定使用与否。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • DAO接口为每个DAO声明接口的好处在于: 可以在尚未实现具体DAO的时候编写上层代码,如Service里对DAO...
    迷茫o阅读 27,728评论 1 16
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,974评论 6 342
  • 有个久未联系的朋友,忽然有一天给我发微信,向我推荐了一个公众号,并分享了一篇文章,题目是《武松——一个草根英雄的野...
    暂且这样吧阅读 253评论 0 1
  • 【春节最后一天】 怎么说呢?这个春节过的,有时候感觉它很长,有时又觉得它太短,相对于母亲的病情,觉得它长,相对于休...
    一帘月风闲阅读 156评论 0 0