前几天在思考代码中接口(Interface)的重要性,恰好翻到了Hacker News上一篇关于讨论接口的帖子,看到其中一个程序员的评论顿觉非常有趣,现翻译一下:
当我开始思考接口时,我会告诉自己回忆一下我手头上的DVD是如何工作的。
作为世界工厂,DVD可能是中国的某一家工厂生产出来的,这家工厂里的工人与我素不相识,但是我依然可以把手上的光碟不大不小完美的放到DVD中播放,而且这些光碟可能是美国的工厂生产出来的,这些美国工厂中的工人不认识我,也不是认识中国工厂的工人。
读取DVD的程序当然可能是另外一个国家的一帮程序员编写的,这些程序员不认识以上提到过的的任何一个人,但这并不妨碍DVD正常工作,甚至即使光碟上有小小的刮痕也不要紧。
DVD中录制的电影也许是好莱坞制作的,这些制作人不认识中国工厂的工人、美国工厂的工人还有程序员,但DVD依然可以完美还原拍摄电影时的音频和视频。
DVD的生产链如此复杂,但DVD依然可以正常工作,而且一片光碟不超过50美分,一个DVD也就不到30美元。
这就是接口的力量。
当然,这也是资本主义的力量。
翻译完毕,个人觉得这个比喻很好的解释了为什么接口在软件工程中如此重要。
没有人否认现代社会分工协作的重要性,正是因为社会有了分工,才使得人可以专注于自己的领域,精益求精不断创新,最终整个社会都从中受益,表现出来的就是社会生产力的提高,这里的分工,在软件工程中也就是解耦,各个模块各司其职。
另外一个我能想到的例子就是超市,超市就是一个大型的解耦机构,也可以认为超市就是一种接口,生产粮食水果的农民、制作零食、生产衣服以及各种消费品的工厂、公司与去逛超市的消费者互不相识,生产衣服的工厂不关心张三买还是李四买,张三和李四也不关心衣服是A工厂生产的还是B工厂生产的,农民、工厂只需要把生产的粮食、衣服等交给超市,剩下的就不关心了,而消费者需要做的就是开开心心的去逛超市而不是一家一家的去逛粮食生产基地、工厂车间。
其实超市的作用也就是类似中间商,本质上中间商做的事情就是解耦,解耦谁呢?解耦生产者和消费者。现在大家被广告轰炸的就认为中间商只会赚差价,难道中间商就只会两头赚钱全无益出吗?当然不是的,你能想象农民伯伯自己辛辛苦苦生产出粮食水果后还要自己负责把这些都销售出去吗?你能想象到当你想吃苹果的时候还要专门去找某个水果生产商吗?从经济学角度上讲中间商有着重要的作用。号称没有中间商的互联网,当阿里巴巴让消费者直面店家的时候,其实阿里巴巴自己就成了中间商,否则阿里巴巴每年赚的那些钱是从哪里来的呢?
更多计算机内功文章,欢迎关注微信公共账号:码农的荒岛求生。

彻底理解操作系统系列文章
1,什么程序?
2,进程?程序?傻傻分不清
3,程序员应如何理解内存:上篇
4,程序员应如何理解内存:下篇
计算机内功决定程序员职业生涯高度
通过DVD的生产链,阐述接口在软件工程中的重要性,实现模块间的解耦,促进社会分工与协作,提升生产力。
860

被折叠的 条评论
为什么被折叠?



