天天看點

為什麼要用接口,而不是直接用類實作

接口這個定義比較老生常談,那麼很多人都隻知道擴充性好啊,多态啊…的一些好處,但是為什麼要用接口呢。

出現這個問題的根本原因,是目前你還沒達到這個項目級别高度,因為接口的定義是站在産品總監的位置他來發起的。說實際一點,我是一個産品總監,我必須要求我的項目具有擴充性,容錯性,什麼意思,我手下有20多個人,每個人做一個子產品,那麼我就對每個子產品做了定義了(就是接口),因為這是一個系統,一個項目,很多子產品,我不可能盯着每個人直接寫接口實作,或者我不能自己寫直接實作接口的類,如果讓下面的20個人分别寫某個子產品,直接實作接口。如果某天其中一個人辭職了不幹了,我會招聘另一個人,他隻需要看我定義的接口,就能實作我要的功能子產品了,而不是在離職的那個人的代碼裡(可能有錯誤,可能有備援)修改。

現在大家都能了解了,接口不是留給簡單的程式員(碼農)來思考有什麼用的,因為接口不是給你這種簡單碼農用的,你隻需要給我實作接口就ok,接口是站在産品高度的上司者,才能發起的,他才會考慮的。那麼換位思考,我當然知道我下面的20個人,他們都想各自寫直接實作就ok。

那麼你為什麼會出現這個問題,因為你不僅充當了碼農的角色,你還扮演了整個項目的産品經理,你想把你的項目做到最優化,最好。

但是你手下還沒那麼多人,是以沒能暴露出不寫接口的麻煩。

總之一句話總結就是,接口是産品經理等站在項目一層的人發起的動作,底層的碼農必須按照接口要求進行實作,角色不同,考慮不到不知道你們都清楚了嗎(措辭可能有些bug,請忽略)。

舉個例子。

我是唐山市的市長,由于我要求我們市所有跑的車輛必須是6個輪子的車,那麼我這就要定義一個接口,所有給唐山市的生産廠家,必須生産的車輛是6個輪子。

然後A廠就去生産了6個輪子的。

B廠生産了5個輪子的。

那麼B廠的車我就不允許來唐山市賣了,我就保證了整個唐山市的車輛都是6個輪子的。

以後可以還有很多車廠(一汽豐田,廣汽本田等)給唐山市生産車,但是必須按照我的規章,要6個輪子,才可以來我市(代碼寫進我的項目)。規則是上司者定的。

接口是上司者為以後擴充定的規則。

原文中有一個評論是“為什麼電腦主機闆上還要有記憶體插槽,顯示卡插槽?多浪費機箱空間啊?

直接用電烙鐵把顯示卡和記憶體的引腳一根一根焊到主機闆上不就得了。

如果你焊錯位置了,說明你焊工不好。

每次拆裝的的時候再繼續用電烙鐵。”

得到了很多小夥伴的贊同,但是這個隻說出了接口存在的好處,并沒有類比到接口出生的本質。出生的本質是為了高性能,i5主機闆提前制定了CPU必須是1150針,才能插在我的主機闆上,達到擴充的目的。

好了說了這麼多應該都清楚了,接口就一句話,上司者制定的規則。寫接口并不是為了擴充,而是為了擴充以後的子產品仍然跟項目子產品保持高度一緻。

是以項目大小不是決定寫接口的決定性因素,決定性因素是,你要不要寫的規範,擴充後,還是那麼規範。

轉載自:https://www.cnblogs.com/xiruojun/p/9951798.html