论“接口”

[TOC]

什么是接口

看到这两个字,第一反应是什么?估计是USB接口、type-c接口。这两个确实是我们一般人听得最多的接口了。我们生活里到处是接口,各种形式的。

  • 实物硬件接口:
    插座是电器和电源之间的接口。电脑更有一堆接口,USB接口、接显示器的hdmi接口、接硬盘的sata接口...手机的电源线接口有micro usb、usb-TypeC等。

  • 软件的接口
    软件领域里的接口最质朴的定义就是函数了。看一个很简单的c语言函数,放心,不会编程也看的懂。
    int add(int a,int b)
    输入两个数a和b,计算它们的和后返回。

  • 社会里的接口
    我曾经就职过的一家公司的新员工手册是这么写的:

    人事相关接口是xxx,财务接口是xxx,...

    这个说法我很喜欢,一家主要人员是码农的公司,用接口来定义每个人的岗位职责再合适不过了,天天和接口打交道的码农们一听就明白了。

    这个说法其实很“妙”。因为当我们说“人事问题找XXX的时候”,我们更关注的是XXX这个名字。而当我们用“接口”一词的时候,我们第一想到的是这个接口提供哪些功能,比如考勤、请假、录指纹什么的。XXX这个名字被弱化,XXX作为一个接口它提供的功能被强化。

    我们把视角抬高,看向这个社会,社会里各个人、组织其实不是都在扮演一个个“接口”么?售票员是一个输入钱返回车票的接口;教师是一个输入未教育学生提供教育后学生的接口;国家的环保部门属于国家的环保接口,提供环保规划、检测、提高的功能;...

接口的本质

这么多接口,它们都有一个共同特点:

输入一些东西,做一些处理,然后输出一些东西。

USB、hdmi这些电气接口进行的是电信号处理,输入一些电信号,输出一些电信号;软件接口进行的是数据处理,输入一些数据,输出一些数据;社会接口提供的是社会服务,输入钱、材料、问题,按照服务约定处理,返回购买的东西、处理过的材料、解决后的问题。

参考一下百度百科里官腔的定义:

接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式。

接口间的相互调用

接口并不是独立的,接口之间相互依存、寄托,一个接口会调用另一个接口,一个接口会被N个接口调用。

接口的层次

接口并不是完全平等的。有些接口是底层的,它们提供一些基础的服务,比如驱动程序提供的硬件操作接口,政府部门提供的政府服务接口;有些接口是上层的,比如USB接口,普通人每天都在用,比如超市的收银员。

系统由一系列接口组成而成

一个系统,是由不同层次的接口组成的。

拿计算机系统举例:

硬件厂商提供了驱动程序,这是操作硬件的接口。

操作系统调用这些硬件接口,向上提供一些更好操作硬件的接口,因为直接操作驱动程序太难了。然后添加一些文件、进程、内存、网络的接口给上层程序使用。

为了更方便的让码农们写程序,人们发明了C语言。运行C语言开发的程序需要在系统上安装一个C语言运行接口库。

码农们用C语言开发了各种应用程序,同时也开发了一些上层接口,比如图片处理、音频处理...

接口是算法、服务的实现形式

我们做数学题,题目提供一些已知数,我们按照我们的算法,返回目标数。用接口的模型看,我们的算法就是一个接口。

我们常听到“服务器”,服务器干嘛的?顾名思义,提供的是“服务”。那服务的实质是什么?我们使用服务器的服务,其实最终还是实现为调用一个程序接口。

算法,服务,最终都要以接口的形式实现。

累积、迭代自己的接口库

很多接口放在一起作为一个集合,就是接口库。

我们接口库里的接口越多,能做的事情就越多;我们的接口越高级,效率就越高,这一生能做的事情就越多,等于延长了生命。

  • 人的接口库
    有些人可以帮你解决工作难题;有些人可以总是知道哪里有好吃的,有些人可以帮你解决各种汽车问题;有些人,可以在你失意时陪你喝酒。

  • 做事的接口库
    随着我们的成长,我们积累了越来越多的做事方法。怎么高效阅读?怎能么快速搜索?怎么快速地做出外观漂亮内容充实的PPT?将这些方法总结出来,以接口的思维审视它,这些方法就是你的一个个接口。

不断的累积和迭代我们的接口库,变得越来越高效。

你可能感兴趣的:(论“接口”)