Spring 里 Service 层分成接口+Impl 的好处是什么?

2021-01-02 18:17:37 +08:00
 AAASUKA

分开写感觉很累赘,为什么很多人这么选择?
为什么不直接用一个 Service 类实现

8342 次点击
所在节点    Java
70 条回复
hcx0
2021-01-02 18:19:20 +08:00
现在对 99%的项目来说没有好处,就是机械的遵照惯例
dorothyREN
2021-01-02 18:30:40 +08:00
我就懒的写 impl,直接 service 真香
jzmws
2021-01-02 18:39:15 +08:00
1. 接口说要做什么
2.impl 说明如何做
现在大部分都是一个接口一个 impl ,最早的设计思想应该是接口对应多个 impl

用接口的好处是我无需关注他是如何实现的,你一个接口可以有多重实现类 , 后期方便维护, 屏蔽底层实现细节


不好的地方是 代码量变多了
araaaa
2021-01-02 18:46:38 +08:00
业务代码里没卵用的设计
tidezyc
2021-01-02 19:01:22 +08:00
首先面向接口设计肯定是一种合理和标准的编程规范,其次当十几个人维护同一份代码的时候,遵守这样的标准规范是保证代码质量和可维护性的前提,当然你要自己一个人写着玩就随意了
AlisaDestiny
2021-01-02 19:09:52 +08:00
如果你能明白 java.util.List 接口存在的意义你自然就知道为什么这样设计。
laminux29
2021-01-02 19:14:19 +08:00
详细原理与实施经验在软件工程课程里,建议找书仔细看看。
Cbdy
2021-01-02 19:28:15 +08:00
这样做很蠢,请不要这么做
hantsy
2021-01-02 20:07:14 +08:00
1,大型项目,基于接口的设计是比较理想的。(对于中国公司来讲,大部分还是套用三层结构,没有架构设计成分)
2,在 Spring 中 Proxy 无处不在,早期 Spring 的技术限制,比如使用了某些技术,创建 Proxy 只能用于接口。
freebird1994
2021-01-02 20:41:36 +08:00
没有用。就像楼上说的,其实你的接口只有一个实现。没有任何卵用
chendy
2021-01-02 20:49:17 +08:00
现在没用
1. 现在的项目很少需要多个实现
2. 抽接口主要因为 java 自己的动态代理机制需要接口,但是现在用的 cglib 子类的并不需要
3. 有的时候还是需要的,需要的时候抽就行,IDE 的重构工具抽个接口很快的
xuanbg
2021-01-02 20:56:25 +08:00
好处是我可以只写 service,impl 交给别人去写。
quantal
2021-01-02 21:52:14 +08:00
你在问这个东西的时候就说明不需要,需要也就不用问了
tedzhou1221
2021-01-02 22:32:20 +08:00
举个我现实的栗子

我一个功能接口,有三套逻辑,根据类型去判断到底用哪套逻辑。不同逻辑就是不同实现类

所以我要用接口。

再使用策略模式+spring 的注入机制。我调用层只注入接口就可以。

但很多时候,还是一个接口一个实现类。

有很多同事都习惯把不同逻辑的全放到一个实现类。各种 if 判断……
tedzhou1221
2021-01-02 22:44:35 +08:00
接受上,如果有增减实现类需求,可以通过 @congfiguratong 去从配置里控制,或者用 spring spi 去实现。
tedzhou1221
2021-01-02 22:45:29 +08:00
手机打字,打错了几个字……
yetone
2021-01-02 23:16:22 +08:00
为了可以写测试啊同学们……
ElmerZhang
2021-01-02 23:24:56 +08:00
Java 写得不多,只想请教一下,不用 Interface 的话,单测怎么写呢?
cheng6563
2021-01-02 23:38:45 +08:00
curd 的业务没用,其他的局部功能才有用。
extreme
2021-01-02 23:46:54 +08:00
面向接口而不是具体实现进行开发
一方面解耦
另一方面,我觉得也是最重要的一方面,就是方便单元测试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/741075

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX