12
返回列表 发新帖
楼主: techDiscussion
跳转到指定楼层
上一主题 下一主题
收起左侧

[学Java/C#] 关于为何要用Java的Interface

 
全局:
我觉得挺好的一个问题

首先interface的中文叫做“接口”,大意是实体把自己提供给外界的一种抽象化物。

从现实世界来说

举个简单的例子,我们平时在墙上看到的插座,就是一个接口,可以泛指为家用电力系统给外界提供电力的接口。

那么可不可以不使用我们常见的这种美式的三个平行竖线一样的接口呢,当然可以,国内的接口就是类似于一个竖线一个八字这样的设计。

那么我们在生活看到的就是每一个电器都会去连接这个墙上的interface,所以这个也可以说是一个contract 或者说一个标准,规范,都可以。

但是要是没有这一层抽象会怎么样呢?楼主你可以想象一下你拿了一堆中国电器刚来美国时候的样子。

另外,说到标准和规范为什么存在,我个人认为这本质上是一种“共识”,如果你可以在你周围的小团体里面去推动“不使用java的interface,使用别的方式作为contract”,只要你能建立这种共识,那本质上来说,相当于你重新发明了interface这个东西。 当然这个历史阶段已经过去了,java也提供了语言层面的实现,而这也同时是开发者之间的共识。

最后,
给点米吧。球球了


评分

参与人数 16大米 +17 收起 理由
victor2100 + 2 很有用的信息!
missschwa + 1 很有用的信息!
ccaipd43 + 1 给你点个赞!
xiao12345 + 1 赞一个
Mitchelle + 1 赞一个

查看全部评分

回复

使用道具 举报

🔗
 楼主| techDiscussion 2022-7-4 05:58:00 | 只看该作者
全局:
stevethehitman 发表于 2022-7-1 16:46
当然可以  
但是你要把这个contract一直保持下去 让其他合作的人知道 以及让后来接手的人知道

我只是不确定这种规范的意义是什么???

如果一个interface只有一个实现类的话,interface存在的实际意义是什么呢??
回复

使用道具 举报

全局:
techDiscussion 发表于 2022-07-03 14:58:00
我只是不确定这种规范的意义是什么???

如果一个interface只有一个实现类的话,interface存在的实际意义是什么呢??
所以好处就是可以有多个实现呀…
回复

使用道具 举报

全局:
楼主需要学习一下设计模式,其中最重要的原则就是program against interface
回复

使用道具 举报

全局:
techDiscussion 发表于 2022-7-3 14:58
我只是不确定这种规范的意义是什么???

如果一个interface只有一个实现类的话,interface存在的实际意 ...

如果只有一个实现类确实不需要interface
问题是
你怎么知道只有一个实现类 你确定项目未来不会扩展吗 确定不会有新的需求

你能确定只有一个实现类 确定未来不会扩展 确定以后不会有新需求的情况只有一个
那就是你一个人在做一个toy project 或者demo什么的
你即是唯一的owner又是唯一的developer 并且做完就再也不维护了 大概率也不会投产
回复

使用道具 举报

全局:
techDiscussion 发表于 2022-07-03 14:58:00
我只是不确定这种规范的意义是什么???

如果一个interface只有一个实现类的话,interface存在的实际意义是什么呢??
楼主,只要你要测试而且系统够复杂就至少有两个implementation.比如说我写了一个系统可以控制大坝放水,别人观测水位超过了就call api放水。那么这个系统需要测试的话怎么办?只有一个implementation 的话也太浪费水和时间了。当然一些简单的class确实不需要。
回复

使用道具 举报

🔗
流浪牛 2022-7-6 22:00:04 | 只看该作者
全局:
你写一个别的东西作为contract你要加注释告诉别人这个是contract
你写一个interface所有人都马上知道这玩意是个contract
回复

使用道具 举报

全局:
techDiscussion 发表于 2022-07-03 14:58:00
我只是不确定这种规范的意义是什么???

如果一个interface只有一个实现类的话,interface存在的实际意义是什么呢??
未来可能有多种不同实现
回复

使用道具 举报

全局:
我用interface的原因是我要告诉同事和以后的同事里面的method要implement,其他逻辑会调用那些method,不implement会跑不了
回复

使用道具 举报

🔗
ccaipd43 2022-8-5 04:15:42 | 只看该作者
全局:
我也有类似问题,java面试中也常会问到:interface vs abstract class
google能告诉我这两者的区别,但我还是不够理解,有人能解释一下什么时候用interface什么时候用abstract class吗?what's the advantage using interface over abstract class and vice versa?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表