1. 程式人生 > >淺談Service層為何要有介面

淺談Service層為何要有介面

被人隨意問了一句,為何每個service層都要寫一個介面呢,多麻煩~雖然想說點什麼,但是又不知道從何說起,只好從新整理一下思緒.

情景1:在開源框架中有很多這種情況,就是某個功能支援使用者自定義擴充套件.說白了,它提供了一個介面,我們只需要實現這個介面,把我們自己的實現邏輯補上,就可以讓框架按照我們的邏輯來執行.問題來了,框架的作者並不知道我們的實現類是什麼,如果不定義一個介面,那麼要如何在框架中呼叫我們的實現類呢?

情景2:我和同事分別做專案的2個不同功能模組,但是同事的功能中卻需要呼叫我這頭實現的部分邏輯.為了讓他有一個"佔位符"可用,我是不是應該快速的寫個介面扔給他呢?

情景3:一個介面卡功能,或是說一個簡單的工廠類,如果沒有定義介面,那麼面對眾多實現類,要如何統一操作呢?

情景4:想讓專案的程式碼符合某種"規範",但是又不可能看著別人寫程式碼吧,那好辦,先出一套介面,然後你們就看著辦~

情景5:java中沒有多繼承,但是可以多實現介面,那麼就有一件很有趣的事情了,一個實現類可以實現多個介面,然後此時介面可以有選擇的暴露實現類的部分方法,做到"窄化"實現類功能的目的.

當然例子還有很多..這些情況其實可以說是介面好處的體現,所以java有面向介面程式設計的建議.但是說回Service層一定要有介面嗎?那到未必,因為說到底,多一個介面僅僅是擴充套件性和某些情況下有優勢,但是是否會用到介面的便利性,不確定的情況下我們未必一定要為"可能"買單.只是多寫那幾行程式碼,付出一點就可能避免"未來"的大"麻煩",何樂而不為!?