Service層和Dao層真的有必要每個類都加上接口嗎?
這個問題是很多程序員糾結的地方,只是會用,卻不知道為什么要加上接口。
我認為接口的必要性有兩點:
1.java是單繼承的,卻可以實現多個接口我們可以先來討論一個問題:
生活中的"門"能夠“開“和“關”,也就是有這兩個功能
那么用java語言寫的話,就是一個Door類,類中兩個方法:open()和close();
生活中的"鎖"能夠上鎖和開鎖,也就是有這兩個功能
那么用java語言寫的話,就是一個lock類,類中兩個方法:lockUp和openLock()
問題:
要求寫一個防盜門,這個防盜門毫無疑問肯定有"鎖"的功能,也有"門"的功能?
這個防盜門類務必要使用到,門和鎖的功能,但是你不能同時繼承以上兩類(開頭講到的java的單繼承),所以必須將其中之一類改成接口,如下圖;
結論:
在我們開發中也必定會遇到多繼承的問題,這個時候接口就非常有必要了
2.接口能夠實現靈活的拔插拿我們的jdbc接口Connection、Statement、ResultSet來說,可以通過這三個接口,實現連接不同的數據庫mysql、oracle等。只是他們的驅動包需要更換(也就是實現類)。如下圖同一個USB接口,可以有不同實現,完成不同的功能!!
結論:
在實際的開發中,一個項目需要進行不斷的迭代,迭代過程中涉及到功能升級,方法的添加,代碼的修改等
這個時候不建議在原來的類中進行修改(為什么?開發過的童靴都知道別人寫的代碼都是一坨xiang)
而且面向對象的設計原則有這么一條"針對擴展開放,針對改變關閉"
而是通過實現同一個接口新增功能;
基于以上兩點,接口是非常有必要的!!
希望有所啟發