why javaer 什么都要搞一个 interface?
<p>最近看了几个 web 项目, 不明白的是, 为什么到处都是 interface? 而且很多 interface 只有一种实现? </p>
<p>俺理解的是, 只有在抽象的情况下, 以及可能有多种实现的情况下, 才需要 interface, 比如一个</p>
<p>IUserRepo 表示用户数据的存储, 而存储方式可能是有多种情况, 为了不在业务层耦合到具体的存储方式, 所以使用接口没问题.</p>
<p>但像以下这种</p>
<p>IUserService</p>
<p>UserSeriveImpl</p>
<p>对于这种业务层为什么还要抽象一种接口? 俺好像没见过 IUserService 这种接口有多种实现的情况?</p>
收藏(0)
分享
相关标签:
注意:本文归作者所有,未经作者允许,不得转载
-
2022年5月26日 07:58
面向接口编程是这样的
0
0
-
2022年5月26日 07:58
因为这是毒瘤模板
0
0
-
2022年5月26日 07:58
😂
0
0
-
2022年5月26日 07:58
因为大部分是毒瘤模板+1
0
0
-
2022年5月26日 07:58
这就叫依赖反转
0
0
-
2022年5月26日 07:58
#2 应该是 mock 的 repo 吧, 比如, 测试的时候, 可能不依赖真实的数据库, 而是依赖内存存储之类的, 本来就是要测试业务逻辑的, 不应该 mock UserService 这咱吧...
@ #4 第二种不是效率更好么?
@ #5 一直没找到这种标准是从哪里来的... 找不到出处啊, 铁子
@ #8 俺理解的是, 如果登陆方式要抽象的话, 设计一个 ILogin 接口就好, UserService 依赖这个, 而不必把 UserService 也搞成接口
0
0
-
2022年5月26日 08:27
为什么我在只有一个实现的时候就不搞?
0
0
-
2022年5月26日 08:27
代码生成的,也方便后续自己写其他实现..
0
0
-
2022年5月26日 08:56
有人用 interface 做 mixin 吗?
0
0
-
2022年5月26日 09:25
规范嘛, 恶心是真滴恶心, 不过好处是有这么一套通用甚至垄断的规范在, 不至于太恶心,不然高情商点百花齐放,低情商则神魔乱舞,一个人一套规范,天天吵最佳实现谁也不服谁那才是真的恶心了
0
0
-
2022年5月26日 09:55
不容易出错
0
0
-
2022年5月26日 09:55
相当于注释了吧
0
0
-
2022年5月26日 09:55
写 spring 不会写,都是单实现,基本不会写接口
写 vertx 时会, 因为会用到 service proxy 和 codegen
基于 future 的接口 client, 会把 reactive 的 client 给你包好
基于 future 的接口服务, 会把 eventbus proxy 生成好
现在改用 quarkus,然后又不写接口了....
0
0
-
2022年5月26日 09:55
test + 多个实现
0
0
-
2022年5月26日 09:55
因为我真的见到过有多种实现的情况
0
0
-
2022年5月26日 10:25
无脑重复前人的代码, 毒瘤模板而已
0
0
-
2022年5月26日 10:55
很多原因吧, 比如: 1. 被诟病的 封装, 设计设计设计, 设计模式啊, blbla... 2. 正常原因 java 不能多继承,只能用 interface 来做(其实还好) 3. 卷 4. 包屎
0
0
-
2022年5月26日 11:25
#19 嗯, 这样说也有点道理, 关键是好多接口和实现是一个人来写的...
@ #22 不明白需求增长了, 为啥要替换实现?
@ #34 俺也是这么个意思
@ #36 持久层可以抽象的, 俺的意思是业务层为啥也要抽象...
@ #38 这个确实也是一种场景. 俺忽略了
@ #47 看来这写不写接口不是设计上的考虑, 有时更多是框架的限制...
0
0
-
2022年5月26日 11:55
mock 也可以不用接口的
0
0
-
2022年5月26日 11:55
为啥 C/C++er 要写头文件呢?
0
0
-
2022年5月26日 12:25
看下 jdbc mycat 的源码 - -
0
0
-
2022年5月26日 13:55
不做单测吧
0
0
-
2022年5月26日 14:55
可以了解一下 DDD
0
0
-
2022年5月27日 00:55
有好处也有包袱
0
0
-
2022年5月27日 02:25
其实面向 interface 没有问题, 主要是要程序员要理解什么是 interface, 为什么会有 interface, 有的低级开发复制粘贴惯了, 直接把实现都复制过来这样根本没有意义. interface 本来就是让你自己梳理你的模块的接口的, 让功能自洽, 合理的设计接口, 而现实有的低级开发只是把一堆乱七八糟的东西堆到 interface.
0
0
-
2022年5月27日 05:25
我觉得是非常好的 编程习惯, 从整个项目的视角
0
0