Service层需要接口吗?( 二 )
- Controller
- Service
- ---- 接口在一个包中
- impl ---实现在另一个包里
- Service2
- impl2 ---新实现在另一个包里
- Dao
不过 , 从结构上来看 , 实际方式二的结构要比方式一的结构更清晰 , 因为从模块上能区分逻辑 。
那有没有办法来结合两者的优点呢?答案是肯定的 , 而且操作起来也不复杂!
首先将接口和实现独立开 , 作为一个独立的模块:
- Controller
- Service --- 接口模块
- ServiceImpl
- impl ---实现在另一个包里
- ServiceImpl2
- impl2 ---新实现在另一个包里
- Dao
- Controller
- Service --- 接口模块
- ServiceImpl
- impl ---实现在另一个包
- ServiceImpl2
- impl ---新实现和老实现在相同的包中
- Dao
假设 , 我们把Service接口模块去掉 , 结构变成了如下所示:
- Controller
- Service1 --- 老实现
- Service2 --- 新实现
- Dao
不使用接口的缺点上面给出了不使用接口的理由 。 不过不使用接口并不是完全没有缺点的 , 主要问题就是在进行多实现的时候 , 没有一个强接口规范 。 即不能通过实现接口 , 借助IDE快速生成框架代码 。 对于没有实现的接口 , IDE也能给出错误提醒 。
一个不太优雅的解决是 , 将原来的模块里的代码拷贝一份到新模块中 , 基于老代码来实现新的逻辑 。
所以 , 如果一个项目需要多实现、且多实现数量较多(不过一般项目不会有多个实现的) , 则推荐使用接口 。 否则不需要使用接口 。
总结本文针对「Service层是否需要接口」这个问题 , 指出需要接口的理由的问题 。 以及个人对这个问题的观点 , 希望对大家有一些帮助 。
推荐阅读
- 央行的“硬钱包”来势汹汹,支付不再需要手机?支付宝、微信慌了
- 想自学Python来开发爬虫,需要按照哪几个阶段制定学习计划
- 玩转光追大作最低需要什么配置?快来看小狮子的推荐
- 学习大数据是否需要学习JavaEE
- 苹果电池容量阈值为80%,较低时需要换电池吗?得换原装的吗?
- 脑机接口发展失控,人类或将成为变形金刚,马斯克也很无奈
- 扫码枪将钱扫走,却不需要密码,安全吗?
- 除了 Markdown 编辑器,你还需要会用程序来处理它
- 美国需要与盟国一起实现人工智能优势
- 375W喂不饱:技嘉给RTX 3080悄悄增加了一个供电接口