点击上方 Java后端,选择 设为星标
优质文章,及时送达
链接:toutiao.com/i6882356844245975563
前几天刷头条又刷到了「Service层和Dao层真的有必要每个类都加上接口吗?」这个问题,之前简单回答了一波,给出的观点是「看情况」
现在结合我参与的项目以及阅读的一些项目源码来看。如果项目中使用了像Spring这样的依赖注入框架,那可以不用接口!
先来说说为什么使用了依赖注入框架以后,可以不使用接口!
我整理了支持Service层和Dao层需要加上接口的理由,总结下来就这么三个:
-
可以在尚未实现具体Service逻辑的情况下编写上层代码,如Controller对Service的调用
-
Spring默认是基于动态代理实现AOP的,动态代理需要接口
-
可以对Service进行多实现
-
先在Controller层编写逻辑,遇到需要委托Service调用的地方,直接先写出调用代码。
-
优先完成Controller层的流程
-
然后使用IDE的自动补全,对刚才调用下层的代码生成对应的类和方法,在里面添加TODO
-
等所有的类和方法都补全了,再基于TODO,按照上面的流程去一个个的完善逻辑。
-
此方法可以使你对业务流程有比较好的理解。
-
Controller
-
Service
-
Dao
-
Controller
-
Service
-
--- 接口在一个包中
-
impl --- 实现在另一个包里
-
Dao
-
Controller
-
Service
-
---- 接口在一个包中
-
impl ---实现在另一个包里
-
impl2 ---新实现在另一个包里
-
Dao
-
Controller
-
Service
-
---- 接口在一个包中
-
impl ---实现在另一个包里
-
Service2
-
impl2 ---新实现在另一个包里
-
Dao
-
Controller
-
Service --- 接口模块
-
ServiceImpl
-
impl ---实现在另一个包里
-
ServiceImpl2
-
impl2 ---新实现在另一个包里
-
Dao
-
Controller
-
Service --- 接口模块
-
ServiceImpl
-
impl ---实现在另一个包
-
ServiceImpl2
-
impl ---新实现和老实现在相同的包中
-
Dao
-
Controller
-
Service1 --- 老实现
-
Service2 --- 新实现
-
Dao
- END -
最近整理一份面试资料《Java技术栈学习手册》,覆盖了Java技术、面试题精选、Spring全家桶、Nginx、SSM、微服务、数据库、数据结构、架构等等。 获取方式:点“ 在看,关注公众号 Java后端 并回复 777 领取,更多内容陆续奉上。 推 荐 阅 读 1. 好用:强大的 IDEA 代码生成器 2. 头条终面:写个消息中间件 3. 我是一个线程池 4. Spring Boot 接入 GitHub 第三方登录 5. 程序员需知的 58 个网站
喜欢文章,点个 在看
本文分享自微信公众号 - Java后端(web_resource)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。