查看: 2106|回复: 19
收起左侧

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

|只看干货
本楼: 👍   0% (0)
 
 
100% (2)   👎
全局: 👍   69% (637)
 
 
30% (281)    👎

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
很多人跟我说,interface是一个contract,


好的,那么 interface是一个contract,那么,我不用interface,难道不能当成一个contract吗???

评分

参与人数 1大米 +1 收起 理由
14417335 + 1 欢迎来一亩三分地论坛!

查看全部评分


上一篇:greedy题是不是可以基本不刷?
下一篇:怎么能调动刷题的积极性呢?和大家请教方法。请进来坐坐,指教下
本楼: 👍   100% (12)
 
 
0% (0)   👎
全局: 👍   94% (371)
 
 
5% (22)    👎
我觉得挺好的一个问题

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

从现实世界来说

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

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

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

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

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

最后,
给点米吧。球球了


评分

参与人数 15大米 +15 收起 理由
missschwa + 1 很有用的信息!
ccaipd43 + 1 给你点个赞!
xiao12345 + 1 赞一个
Mitchelle + 1 赞一个
Henry16 + 1 很有用的信息!
honeylemonade_ + 1 赞一个
yezalan + 1 赞一个
Franke + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

stevethehitman 2022-7-4 10:44:34 | 显示全部楼层
本楼: 👍   100% (4)
 
 
0% (0)   👎
全局: 👍   97% (765)
 
 
2% (20)    👎
techDiscussion 发表于 2022-7-3 14:58
我只是不确定这种规范的意义是什么???

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

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

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

使用道具 举报

snail8844 2022-7-2 03:11:50 来自APP | 显示全部楼层
本楼: 👍   100% (3)
 
 
0% (0)   👎
全局: 👍   100% (61)
 
 
0% (0)    👎
一个class可以imolement多个interface,但只能extend一个class

评分

参与人数 1大米 +1 收起 理由
unclewillie + 1 赞一个

查看全部评分

回复

使用道具 举报

sindyleaf 2022-7-2 02:52:43 来自APP | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   98% (1189)
 
 
1% (20)    👎
interface我知道
contract是啥
回复

使用道具 举报

competo 2022-7-2 03:05:19 来自APP | 显示全部楼层
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   90% (1199)
 
 
9% (121)    👎
Using interface as contract gives you most flexibility to implement the contract. If you use a base class as contract, you force a class hierarchy that many don’t like. Depending on language, interface, type and class they can define a contract but they are different in many ways.

评分

参与人数 1大米 +1 收起 理由
14417335 + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

lz9527 2022-7-2 03:50:24 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   94% (1345)
 
 
5% (75)    👎
当然可以,只不过是一种规范
回复

使用道具 举报

 楼主| techDiscussion 2022-7-2 04:05:52 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   69% (637)
 
 
30% (281)    👎
lz9527 发表于 2022-7-1 14:50
当然可以,只不过是一种规范

规范的意义是什么呢?
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   88% (38)
 
 
11% (5)    👎
你觉得为啥单位都有国际规范?
回复

使用道具 举报

本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   97% (1892)
 
 
2% (50)    👎
没有规范,没有固定的API,你用的库今天改一个版本,明天改一个版本,你的应用天天跟着重写,烦不烦?

评分

参与人数 1大米 +1 收起 理由
14417335 + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

nullas 2022-7-2 05:05:21 来自APP | 显示全部楼层
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   100% (141)
 
 
0% (0)    👎
在工作中用的最多的是拿来做dependency injections,写unit test尤其有用。
回复

使用道具 举报

stevethehitman 2022-7-2 05:46:53 | 显示全部楼层
本楼: 👍   100% (2)
 
 
0% (0)   👎
全局: 👍   97% (765)
 
 
2% (20)    👎
当然可以  
但是你要把这个contract一直保持下去 让其他合作的人知道 以及让后来接手的人知道

lz是刚入门吗 刚入门有这种问题很正常
很多规范 特性和设计模式 只有在代码量很大大型项目又或是多人合作的长期项目上才会用得上

评分

参与人数 1大米 +1 收起 理由
14417335 + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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