在IT和互联网领域里面,这个词在不同场景下都会出现,比如“USB接口”,“让后台给我提供一个接口,我直接调用这个接口”,“这里你设计一个接口,我来实现”,分别对应于硬件场景,后台场景,以及面向对象的程序设计场景,我先用一句听不懂的非常抽象的话来描述下,接口就是提供具体能力的一个标准和抽象,OK,你肯定没听懂,我下段开始举例子,说人话来解释。
接口就是提供一种别人可调用的能力的标准,比如你写一封简历找工作,这个简历就是你的接口,这个接口描述了你具备的能力,比如有如下三点1. 熟练使用Office 2. 极度会拍领导马屁 3. 以前在学生会工作,具备非常强的协调能力。对外暴漏了这个接口之后,老板看你具备这三项神奇的能力,聘用了你,领导说,快给我拍拍马屁,那就是调用了你第二项能力。
这里例子表明,任何一个接口都被定义为了能力的集合(就是指例子中那三种),这个例子解释了前面那句不好理解的话的前半句,接口提供了能力,假设你听明白了,哈。
下面解释后半句,为什么是一个标准和抽象呢?这是神马意思涅?我们举例USB接口,大家都知道这个USB接口是一个国际标准,用来连接设备的,注意哦,亲,这里出现了”标准“这个词,这个国际标准定义了什么呢,定义了USB接口全部可以对手机进行充电,并且可以传输数据,并且定义了相应的电压和电流标准等等。那真正在市场上出售的USB,有可能是华硕,三星这样的大厂家做的,也有可能是东莞一个手工作坊出的,但是他们都遵从了这个国际标准,不遵从的话,显然你根本就卖不出去,因为你这个接口连不上PC和手机。这段话包括了两层意思,第一层意思是接口的定义是一套标准和抽象的能力,他只是声明出来,让别人去实现。第二层意思是接口的标准定以后,实现者可能是另外的可能完全不相关的实体。
  目前讲了三层意思:
接口定义了一组能力
接口有定义者和实现者
接口定义一般是抽象的,不包括具体的实现
再来回顾文章开头说的那三个场景,USB接口只是一个标准,任何符合这个标注的USB线都能插入到这个接口上。“后台给你提供一个接口”,这句话在工程中一般表示的是提供一项能力,仅仅只提供一项能力来供你使用,这个跟我们上文讲的接口的定义不完全一样,比如:我做后台,提供了一项能力是,终端可以到我这里调用我的这个接口查询当前所在位置的天气,这种用于在开发过程中讲的是比较多的,常用于前端和后台的联调。”你来设计一个接口,我来实现“,这种一般是在面向对象的程序设计中,对一种能力的抽象,然后分别由不同的开发者来实现,比如我们要实现两种门,一种门是密码锁,一种是钥匙锁,那抽象出来的通用的接口能力就是开门和关门两个能力,而密码锁和钥匙锁分别来实现,显然他们对开门和关门的实现是不一样的,一种是输入密码,一种是用钥匙,如果你负责开门或关门,你只需要看到接口说,可以关门和锁门,根本不用关注关门和锁门的具体实现,有效隔离了调用者与具体实现过程。“门”这个例子是最简单的一种面向对象设计的实现,以后给你们讲讲哦,你们先简单预习下,哈。哈。哈。哈。
讲完了哦,记住一句话就可以了,接口象征着提供出来的能力,定义者和实现者一般是不同的,调用者并不需要关注具体细节,只需要关注接口暴漏出来的能力就可以了。
以后如果程序员说,我需要定义一套接口,你应该明白它是在抽象一种能力集,保证调用者只需要知道这个能力并调用,实现者不需要关心谁调用,只安安心心的做好功能就好了。是不是显得很牛逼,牛逼,逼。。。。。。,接口的这种思想,首先保证了大规模程序开发的可行性,通过接口的设计,一个系统被清晰的定义成了多种能力的集合,每一个开发者只关注自己的模块实现就好了,而调用者才负责完成整个程序的业务逻辑。其实不止程序员需要这种抽象能力,产品经理难道不需要对一个复杂业务进行这种抽象和封装吗?
以后如果程序员说,你给我封装一个接口就好了,我直接调用,你应该理解,他说的意思就是,别他妈让我知道你是怎么实现了,只要我要用的时候,你给我正确的结果就好了。
接口讲完了,希望你能听懂,以后能跟程序员好好交流了,时不常很随意的说一下,后台给你暴漏个接口,你调用一下不就行了,这种装逼应该不会遭雷劈,哈哈。

【转】五分钟理解什么是接口相关推荐

  1. 五分钟理解什么是接口

    五分钟理解什么是接口   在IT和互联网领域里面,这个词在不同场景下都会出现,比如"USB接口","让后台给我提供一个接口,我直接调用这个接口","这 ...

  2. 五分钟理解什么是面向对象

    昨天讲了MVC,有同学表示还想了解一些软件开发架构方面的姿势.我琢磨了半天,列了不少技术名词,本来想挑一个出来讲一讲,写了一半发现有很多前置知识之前没涉及,于是决定把坑填一填,先从基础的「面向对象」讲 ...

  3. [Python]五分钟理解元类(Metaclasses)

    五分钟理解元类(Metaclasses) 真的,它并非巫术. 原文地址:http://www.voidspace.org.uk/python/articles/five-minutes.shtml 日 ...

  4. 五分钟理解yield在python中的简单用法,让你不再迷惑

    很多同学无论是在学习python还是使用python的过程中,都会遇到yield关键字,这个让人头大的问题,今天,就给大家分享一下我自学yield的心路历程 基本概念: (1)在 Python 中,使 ...

  5. 函数式编程语言python-Python——五分钟理解函数式编程与闭包

    今天是Python专题的第9篇文章,我们来聊聊Python的函数式编程与闭包. 函数式编程 函数式编程这个概念我们可能或多或少都听说过,刚听说的时候不明觉厉,觉得这是一个非常黑科技的概念.但是实际上它 ...

  6. Python——五分钟理解函数式编程与闭包

    函数式编程 函数式编程这个概念我们可能或多或少都听说过,刚听说的时候不明觉厉,觉得这是一个非常黑科技的概念.但是实际上它的含义很朴实,但是延伸出来许多丰富的用法. 在早期编程语言还不是很多的时候,我们 ...

  7. 五分钟理解MVC三层架构

    一.理解MVC 最近在学习狂神的javaweb技术,将他讲解的内容整理成博客,给大家带来便利的同时也为自己记录知识,以免日后忘记. 什么是MVC:Model模型,View视图,Controller控制 ...

  8. 五分钟理解原码补码反码和移码

    这是计算机的基本知识了,一定要好好学.哈哈废话不多说,直接进入正题吧.计算机中有无符号数和有符号数两大类. 有符号数就是正负数,在计算机中正好用0和1分别去代表正和负.(ps:好多人不理解机器数和真值 ...

  9. 五分钟理解主存储器的基本组成结构

    在刚开始入门计算机组成原理的时候,很多小伙伴都会被主存储器的基本结构,相关术语搞得一脸懵逼.今天,来聊下,什么是主存储器?主存储器的基本组成结构是什么? 主存储器的基本组成结构 主存就是由上图中所示的 ...

最新文章

  1. DataGridView发生异常
  2. 接口测试 -- 关闭 requests 打开的 file
  3. 图解classloader加载class的流程及自定义ClassLoader
  4. 执行sql语句提示[Err] 1055 - Expression #2 of SELECT list is not in GROUP BY......错误的解决办法
  5. 为什么有些人从不点开朋友圈?
  6. java异常——分析堆栈跟踪元素+使用异常机制的技巧
  7. STM32启动文件——startup_stm32f10x_hd.s
  8. java 斐波那契编程_Java实现Fibonacci(斐波那契)取余的示例代码
  9. gc:C语言的垃圾回收库-英文
  10. Spring的注解问题
  11. IntelliJ 通过 Cloud Toolkit 登陆远程服务器终端 Terminal
  12. stm32f103振镜_基于振镜扫描的生物芯片荧光信号光强校正
  13. 最好用的JQuery插件集合以及组合拳
  14. linux命令怎么显示文件某一行或几行内容
  15. Windows常用cmd命令总结
  16. 戴尔3080计算机重装系统步骤,终于发现戴尔笔记本重装系统的方法
  17. 什么是 DNS 泛洪?
  18. java计算机毕业设计图书馆管理系统源码+系统+mysql数据库+LW文档+部署文件
  19. 李航《统计学习方法》学习日记【1】
  20. python_音频处理_Windows10_ raise NoBackendError() audioread.exceptions.NoBackendError

热门文章

  1. Redis的下载与安装(windows系统)
  2. Java 判断当前日期是否 是这个月的最后七天且是否为工作日(星期一到星期五)
  3. python 正则表达式匹配
  4. java第三讲:数组(Array)
  5. 【电路理论】KCL、KVL、线性直流电路各大方法、定理详解
  6. 基于 SpringBoot + MyBatis 的博客系统
  7. OpenCV实战5 车牌号识别
  8. 无人机学习笔记之电池篇
  9. Matlab中FFT运算加窗函数的验证
  10. 启动报错:Caused by: org.apache.ibatis.binding.BindingException汇总解决