why javaer 什么都要搞一个 interface?

2022-05-26 15:21:56 +08:00
 asanelder

最近看了几个 web 项目, 不明白的是, 为什么到处都是 interface? 而且很多 interface 只有一种实现?

俺理解的是, 只有在抽象的情况下, 以及可能有多种实现的情况下, 才需要 interface, 比如一个

IUserRepo 表示用户数据的存储, 而存储方式可能是有多种情况, 为了不在业务层耦合到具体的存储方式, 所以使用接口没问题.

但像以下这种

IUserService

UserSeriveImpl

对于这种业务层为什么还要抽象一种接口? 俺好像没见过 IUserService 这种接口有多种实现的情况?

7804 次点击
所在节点    程序员
89 条回复
qiumaoyuan
2022-05-27 10:48:17 +08:00
这个问题说到底是预先设计 v.s 重构的问题。很多人所谓的“重构”其实是重写,没办法重构只好预先设计出接口。
zzzkkk
2022-05-27 11:48:38 +08:00
通用性
可扩展

对小型项目 来说都是垃圾
过度设计是万恶之源
2NUT
2022-05-27 13:07:34 +08:00
我觉得是非常好的 编程习惯, 从整个项目的视角
Akagi201
2022-05-27 14:00:07 +08:00
有人说换种实现可以不换 interface 的, 可是有的低级开发设计 interface 时候就没考虑换个实现的兼容性考虑. 还是得一起重构. 而且除了库, 业务服务往往只会用到一种实现.不会存在两种实现共存的情况
VictorJing94
2022-05-27 14:15:08 +08:00
好像这个是某些教程里的..刚从 java 转出来时候还很不适应
chanchan
2022-05-27 18:00:00 +08:00
有的时候有用,写了的话也增加不了多少成本,有 ide,所以...
magiclz233
2022-05-28 02:07:33 +08:00
你要看啥情况,如果是一个大项目,很多人合作的公司项目,那这样搞,最简单的就是有一个规章,扩展性也更强。
要是你自己练手的项目,interface 不说了,你直接接口里面调 sql 都无所谓,自己开心就行
kongg
2022-05-28 11:03:57 +08:00
这个问题平时感觉很正常,你一说,我竟然也想了 这是为什么?
changz
2022-05-28 13:01:00 +08:00
你们不写单元测试的咩。。。

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

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

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

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

© 2021 V2EX