什么是接口

作者: 小镇青年Jack | 来源:发表于2022-05-09 10:13 被阅读0次

五分钟理解什么是接口

一位Java大牛的回答

很多JAVA初级程序员对于接口存在的意义很疑惑。不知道接口到底是有什么作用,为什么要定义接口。
好像定义接口是提前做了个多余的工作。下面我给大家总结了4点关于JAVA中接口存在的意义:

1、重要性:在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。

2、简单、规范性:如果一个项目比较庞大,那么就需要一个能理清所有业务的架构师来定义一些主要的接口,这些接口不仅告诉开发人员你需要实现那些业务,而且也将命名规范限制住了(防止一些开发人员随便命名导致别的程序员无法看明白)。

3、维护、拓展性:比如你要做一个画板程序,其中里面有一个面板类,主要负责绘画功能,然后你就这样定义了这个类。
可是在不久将来,你突然发现这个类满足不了你了,然后你又要重新设计这个类,更糟糕是你可能要放弃这个类,那么其他地方可能有引用他,这样修改起来很麻烦。
如果你一开始定义一个接口,把绘制功能放在接口里,然后定义类时实现这个接口,然后你只要用这个接口去引用实现它的类就行了,以后要换的话只不过是引用另一个类而已,这样就达到维护、拓展的方便性。(感觉像软链接)

4、安全、严密性:接口是实现软件松耦合的重要手段,它描叙了系统对外的所有服务,而不涉及任何具体的实现细节。这样就比较安全、严密一些(一般软件服务商考虑的比较多)。


这是一个初学者非常常见的问题。

例如我定义了一个接口,但是我在继承这个接口的类中还要写接口的实现方法,那我不如直接就在这个类中写实现方法岂不是更便捷,还省去了定义接口?

接口就是个招牌。

比如说你今年放假出去杭州旅游,玩了一上午,你也有点饿了,突然看到前面有个店子,上面挂着KFC,然后你就知道今天中饭有着落了。

KFC就是接口,我们看到了这个接口,就知道这个店会卖炸鸡腿(实现接口)。

那么为神马我们要去定义一个接口涅,这个店可以直接卖炸鸡腿啊(直接写实现方法),是的,这个店可以直接卖炸鸡腿,但没有挂KFC的招牌,我们就不能直接简单粗暴的冲进去叫服务员给两个炸鸡腿了。

要么,我们就要进去问,你这里卖不卖炸鸡腿啊,卖不卖汉堡啊,卖不卖圣代啊(这就是反射)。很显然,这样一家家的问实在是非常麻烦(反射性能很差)。

要么,我们就要记住,中山路108号卖炸鸡,黄山路45号卖炸鸡(硬编码),很显然这样我们要记住的很多很多东西(代码量剧增),而且,如果有新的店卖炸鸡腿,我们也不可能知道(不利于扩展)。

链接:https://www.zhihu.com/question/20111251/answer/16585393
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

=========================================================================================

在IT和互联网领域里面,这个词在不同场景下都会出现,比如“USB接口”,“让后台给我提供一个接口,我直接调用这个接口”,“这里你设计一个接口,我来实现”,分别对应于硬件场景,后台场景,以及面向对象的程序设计场景。

我先用一句听不懂的非常抽象的话来描述下,<mark style="box-sizing: border-box; outline: 0px; background-color: rgb(248, 248, 64); color: rgb(0, 0, 0); overflow-wrap: break-word;">接口就是提供具体能力的一个标准和抽象</mark>,OK,你肯定没听懂,我下段开始举例子,说人话来解释。

<mark style="box-sizing: border-box; outline: 0px; background-color: rgb(248, 248, 64); color: rgb(0, 0, 0); overflow-wrap: break-word;">接口就是提供一种别人可调用的能力的标准</mark>。
  比如你写一封简历找工作,这个简历就是你的接口,这个接口描述了你具备的能力,比如有如下三点:

    1. 熟练使用Office
    1. 极度会拍领导马屁
    1. 以前在学生会工作,具备非常强的协调能力。

对外暴漏了这个接口之后,老板看你具备这三项神奇的能力,聘用了你,领导说,快给我拍拍马屁,那就是调用了你第二项能力。

这里例子表明,任何一个接口都被定义为了能力的集合(就是指例子中那三种),这个例子解释了前面那句不好理解的话的前半句,接口提供了能力,假设你听明白了,哈。


下面解释后半句,为什么是一个标准和抽象呢?这是神马意思涅?

我们举例USB接口,大家都知道这个USB接口是一个国际标准,用来连接设备的,注意哦,亲,这里出现了”标准“这个词,这个国际标准定义了什么呢,定义了USB接口全部可以对手机进行充电,并且可以传输数据,并且定义了相应的电压和电流标准等等。那真正在市场上出售的USB,有可能是华硕,三星这样的大厂家做的,也有可能是东莞一个手工作坊出的,但是他们都遵从了这个国际标准,不遵从的话,显然你根本就卖不出去,因为你这个接口连不上PC和手机。

这段话包括了两层意思,第一层意思是接口的定义是一套标准和抽象的能力,他只是声明出来,让别人去实现。第二层意思是接口的标准定以后,实现者可能是另外的可能完全不相关的实体
  <mark style="box-sizing: border-box; outline: 0px; background-color: rgb(248, 248, 64); color: rgb(0, 0, 0); overflow-wrap: break-word;">目前讲了三层意思:</mark>

  • 接口定义了一组能力
  • 接口有定义者和实现者
  • 接口定义一般是抽象的,不包括具体的实现

再来回顾文章开头说的那三个场景,USB接口只是一个标准,任何符合这个标注的USB线都能插入到这个接口上。“后台给你提供一个接口”,这句话在工程中一般表示的是提供一项能力,仅仅只提供一项能力来供你使用,这个跟我们上文讲的接口的定义不完全一样,比如:我做后台,提供了一项能力是,终端可以到我这里调用我的这个接口查询当前所在位置的天气,这种用于在开发过程中讲的是比较多的,常用于前端和后台的联调。

”你来设计一个接口,我来实现“,这种一般是在面向对象的程序设计中,对一种能力的抽象,然后分别由不同的开发者来实现,比如我们要实现两种门,一种门是密码锁,一种是钥匙锁,那抽象出来的通用的接口能力就是开门和关门两个能力,而密码锁和钥匙锁分别来实现,显然他们对开门和关门的实现是不一样的,一种是输入密码,一种是用钥匙,如果你负责开门或关门,你只需要看到接口说,可以关门和锁门,根本不用关注关门和锁门的具体实现,有效隔离了调用者与具体实现过程。“门”这个例子是最简单的一种面向对象设计的实现,以后给你们讲讲哦,你们先简单预习下,哈。哈。哈。哈。

讲完了哦,记住一句话就可以了,接口象征着提供出来的能力,定义者和实现者一般是不同的,调用者并不需要关注具体细节,只需要关注接口暴漏出来的能力就可以了。

以后如果程序员说,我需要定义一套接口,你应该明白它是在抽象一种能力集,保证调用者只需要知道这个能力并调用,实现者不需要关心谁调用,只安安心心的做好功能就好了。是不是显得很牛逼,牛逼,逼。。。。。。,

接口的这种思想,首先保证了大规模程序开发的可行性,通过接口的设计,一个系统被清晰的定义成了多种能力的集合,每一个开发者只关注自己的模块实现就好了,而调用者才负责完成整个程序的业务逻辑。其实不止程序员需要这种抽象能力,产品经理难道不需要对一个复杂业务进行这种抽象和封装吗?
  以后如果程序员说,你给我封装一个接口就好了,我直接调用,你应该理解,他说的意思就是,别他妈让我知道你是怎么实现了,只要我要用的时候,你给我正确的结果就好了。
  接口讲完了,希望你能听懂,以后能跟程序员好好交流了,时不常很随意的说一下,后台给你暴漏个接口,你调用一下不就行了,这种装逼应该不会遭雷劈,哈哈。

[https://blog.csdn.net/weixin_39303983/article/details/110563578]编程话题下的优秀答主

1,226 人赞同了该回答

===========================================================================================

相关文章

  • 21:什么是接口,什么是接口定义

    接口是两个模块之间通信的标准,通信的规范。接口有效的帮助了系统解耦。 接口一般形式: 接口地址:com.jstor...

  • 什么是C接口?什么是CS接口?

    什么叫C/CS接口? 单词“C”的来历是“cinema”(电影)的打头字母,C接口的起源是摄影机镜头。目前,C接口...

  • 什么是接口

    老师上课说的接口 一直很迷是什么 今天看到篇好帖子 记录一下 34期javaEE就业班-你不知道的事之 接口-黑马...

  • 什么是接口

    翻译自ORACLE Java Tutorials –What Is an Interface? 正如你已经学到的,...

  • 什么是接口

    1、概念 接口就是提供具体能力的一个标准和抽象,这种能力别人可以通过接口来调用。 2、分类 在IT和互联网领域里面...

  • 什么是接口

    文章目录 一、什么是接口? 二、软件测试模型 三、接口测试的意义 1. 更早的发现问题 2. 缩短产品周期 3. ...

  • 什么是接口

    五分钟理解什么是接口 一位Java大牛的回答 很多JAVA初级程序员对于接口存在的意义很疑惑。不知道接口到底是有什...

  • 什么是接口?

    接口分类:硬件接口:指的是两个硬件设备之间的连接方式。软件接口:简单来说就是软件程序之间的数据交互通道。软件接口分...

  • 【第八章】Jmeter接口测试实战

    本章大纲 什么是接口测试 为什么掌握接口测试 怎么做接口测试 什么是接口测试 常见web接口方式 为什么掌握接口测...

  • web 服务接口测试

    Question 什么是接口 接口的种类和分类 各个接口之间的区别 什么是接口测试 为什么要进行接口测试 接口测试...

网友评论

    本文标题:什么是接口

    本文链接:https://www.haomeiwen.com/subject/otqhurtx.html