为什么要使用接口,直接实现不就得了

原文:“请只谈为什么,不要讲定义,也不要讲实现的方法,更不要讲重大意义,前者我都懂。我只想知道,如果不用接口会发生怎样的不
良后果等。也就是只需要专家们告诉我“为什么要使用接口”或“为什么必须使用接口”,不使用接口就会如何等。
不过,我的浅显理解是,对于大型软件开发接口可以用少数人快速设计出框架,然后让很多人来分头实现。而中小型软件的开发
可能就不需要接口设计,而是直接实现类。
请专家们指教。”

以上是有一位朋友的问题(可以在百度中搜到原帖),我曾经和他一样,后来我发现甚至编程10年的人,仍然知其然不知所以然,现在我把答案倾囊相授,
希望助有缘人在进阶道路一臂之力。

接口这个定义比较老生常谈,那么很多人都只知道扩展性好啊,多态啊...的一些好处,但是为什么要用接口呢。
出现这个问题的根本原因,是目前你还没达到这个项目级别高度,因为接口的定义是站在产品总监的位置他来发起的。说实际一点,我是一个
产品总监,我必须要求我的项目具有扩展性,容错性,什么意思,我手下有20多个人,每个人做一个模块,那么我就对每个模块做
了定义了(就是接口),因为这是一个系统,一个项目,很多模块,我不可能盯着每个人直接写接口实现,或者我不能自己写
直接实现接口的类,如果让下面的20个人分别写某个模块,直接实现接口。如果某天其中一个人辞职了不干了,我会招聘另一个人,
他只需要看我定义的接口,就能实现我要的功能模块了,而不是在离职的那个人的代码里(可能有错误,可能有冗余)修改。
现在大家都能理解了,接口不是留给简单的程序员(码农)来思考有什么用的,因为接口不是给你这种简单码农用的,你只需要
给我实现接口就ok,接口是站在产品高度的领导者,才能发起的,他才会考虑的。那么换位思考,我当然知道我下面的20个人,他们都想各自写直接实现就ok。

那么你为什么会出现这个问题,因为你不仅充当了码农的角色,你还扮演了整个项目的产品经理,你想把你的项目做到最优化,最好。

但是你手下还没那么多人,所以没能暴露出不写接口的麻烦。

总之一句话总结就是,接口是产品经理等站在项目一层的人发起的动作,底层的码农必须按照接口要求进行实现,角色不同,考虑不到
不知道你们都清楚了吗(措辞可能有些bug,请忽略)

举个例子。
我是唐山市的市长,由于我要求我们市所有跑的车辆必须是6个轮子的车,那么我这就要定义一个接口,所有给唐山市的生产厂家,必须
生产的车辆是6个轮子。
然后A厂就去生产了6个轮子的。
B厂生产了5个轮子的。
那么B厂的车我就不允许来唐山市卖了,我就保证了整个唐山市的车辆都是6个轮子的。
以后可以还有很多车厂(一汽丰田,广汽本田等)给唐山市生产车,但是必须按照我的规章,要6个轮子,才可以来我市(代码写进我的项目)。规则是领导者定的。
接口是领导者为以后扩展定的规则。

原文中有一个评论是“
为什么电脑主板上还要有内存插槽,显卡插槽?多浪费机箱空间啊?
直接用电烙铁把显卡和内存的引脚一根一根焊到主板上不就得了。
如果你焊错位置了,说明你焊工不好。
每次拆装的的时候再继续用电烙铁。”
得到了很多小伙伴的赞同,但是这个只说出了接口存在的好处,并没有类比到接口出生的本质。出生的本质是为了高性能,i5主板提前制定了CPU必须是1150针,
才能插在我的主板上,达到扩展的目的。

好了说了这么多应该都清楚了,接口就一句话,领导者制定的规则。写接口并不是为了扩展,而是为了扩展以后的模块仍然跟项目模块保持高度一致。

所以项目大小不是决定写接口的决定性因素,决定性因素是,你要不要写的规范,扩展后,还是那么规范。

欢迎各位有缘同学指正,同时,“码农联盟”扩招贤能,如果你认为和我有缘,想尝试业余创办一些事业,抓住现代经济时代机遇。欢迎你的加入

猜你喜欢

转载自www.cnblogs.com/xiruojun/p/9951798.html