接口——沟通的桥梁
随着科技的发展,人们很多事情不再需要亲自动手,直接调用接口就可以了
洗衣服按下洗衣机的按键接口;
投资理财打开支付宝,选择基金,余额宝等;
定个机票,打开携程App……
什么是接口
接口是做好一件事情的暴露出来一些方法,通过操作这些方法可以做很复杂的事情。
接口越是简单,能做的事情越是强大,那么这个接口受到欢迎。
接口内部的具体实现和细节是被隐藏起来,不为人知。比如钱存入余额宝,具体如何赚取利息的过程就是隐藏的。
任何对象都有接口,面向对象编程就是面向接口编程。
什么是好的接口
隐藏实现:
不要把实现功能的具体实现暴露给使用者。比如在餐馆点菜,无需亲自指挥炒菜师傅先放油,再放姜……。 所以在程序中能放入private中方法不要放在public中。
使用简单:
用最少的方法实现功能,每个方法没有歧义。对应写代码的原则就是命名易懂简单,输入参数精简,每个方法实现单一功能,不要一个方法实现多个功能。
满足需求
这是最基本的要求
小接口组成大对象
电脑是鼠标,键盘,屏幕,cpu,内存,主板,显卡,等一系列的对象通过接口组成。也正是由于电脑的各个部件的接口是统一的,我们可以分开购买各个部件,然后组装成一台电脑。
cpu又是各个寄存器,运算器,门电路组成的。
…………
归根结底最后都是由原子组成的
对于程序而言,语句组成函数,函数组成类,类组合模块,模块组成最终的程序。
小接口导致大问题1
这个世界越来越多的接口被创造出来,越来越多的过程被隐藏起来,通过接口每个人的能力看起来越来越大,现代人不仅衣来伸手,饭来张口,而且可以上天入地,无所不能。当然这个世界也越来越危险,越来越脆弱。
且不说停水停电会有什么样的影响,如果说没有网络,我们的生活能继续下去吗,没有天然气,又会怎样。windows爆发个 病毒就会让我们抓狂,微信一旦宕机了,更会让我们无所适从。我们所用的接口越来越多,依赖越来越多。
小接口导致大问题2
我们所依赖的接口出现问题时,往往是这个接口内部一个小小的地方出现了问题。
也许是浮点数被忽略掉某个小数,价值几亿的卫星发射失败了。
由于银行把钱贷给穷人,最后穷人换不起贷款,最终也许会演化成世界经济危机,比如2008年的次贷危机。
也许有一天,人工智能的某个bug爆发了,然后人类灭亡了。
所以人类越强大,所以依赖的接口越多,人类实际上是越来越脆弱。
接口演化过程1
接口的演化很多时候不是一步到位,而是一个逐步的过程。
当汽车刚刚出现的时候,是被马车瞧不起的,当时的汽车噪音大,丑陋,冒着黑烟。
当滴滴打车出现的时候是被出租车反对打压的,是被政府限制的。
当房地产改革,推行房贷的时候,老百姓是不敢向银行借钱的。
……
接口演化过程2
正因为接口的演化是一个迂回前进,逐步前进的过程,所以不要想着接口能一步到位。
很多时候需要小步测试,不行的换一种方式再测试。
在改良接口的过程中我们也要忍受很多的混乱,不确定性,所以需要足够的耐心。
只要看到我们所设计的东西在一步步的前进,你就足够的信心告诉自己,这事能成!
谁在调用谁1
当人类掌握了水稻的特性,开始种植水稻。看起来是人类在利用水稻,殊不知水稻因为被人的利用一跃成为地球上最成功的植物。
这难道不是水稻利用了人类?
当人们沉迷手机上的各类App,看起来是我们在操控手机,可是手机也绑定了我们,让我们越来越离不开手机。而手机App背后的厂商更是通过app,收集到大量的人们的行为数据。
当有一天,人类彻底掌握了人工智能,从此不用思考。也许这一天,我们就变成人工智能的宠物,人工智能给出的建议,我们也许就只能乖乖执行。
谁在调用谁2
接口,并不一定是高层调用底层,也有可能是底层调用高层。或者是相互调用。
无论是高层还是底层,凡是一个对象跟另一个对象打交道时都应当通过接口去调用,而不是直接获取这个对象的所有信息。
调用一个接口时,实际上调用者的行为也会被这个接口所同化。所以选择好的接口非常重要。
接口的设计与测试1
接口都是由更小粒度的接口组成的,必须优先保证基层接口的稳定才能构建更大的接口,这个世界之所以稳定,是由于组成这个世界的原子是稳定的。
对于房屋的建造,首先要测试每一块砖瓦,只有砖瓦合格房屋才有可能合格。
用面粉做成的砖瓦是不构建高楼大厦。
对于程序,首先要保证每个一个方法的稳定性,然后每一个类,然后每一个模块的稳定性,最后才是整个应用程序的稳定性。
接口的设计与测试2
对于接口的设计,则刚好是反过来, 首先考虑接口由哪些小接口组成。然后再考虑这些小接口是由哪些更小的接口组成。所以,对一个程序的需求,首先考虑分解成哪些模块,再考虑每个模块由哪些类组成。
而设计接口的时候,首先要想到如何测试这个接口。也就是说这个接口要到达些什么要求。这就是测试驱动开发。
利用接口做好事情
人的精力是有限的,不可能什么事情都自己动手,特别生活在当今竞争激烈的社会,利用接口做好事情非常重要。
语言是人类思想交流的接口,程序语言是人和计算机交流的接口。
任何对象都有接口,知道了使用这些接口就能够操控这些对象。
掌握最强大的接口的使用,比如社交App中的微信。操作系统如windows
多备用些额外的手段,一个接口不能用时,能有替代的手段。
当你发现某事情做起特别不顺手,那是上天给你的机会到了。赶紧设计一个接口,让事情变的容易起来吧!