2015-02-24 31 views
1

在我們的項目體系結構中,我們使用了包含經典服務層(打開事務並調用DAO層)的經典MVC模式。在服務層上使用接口

對於每個服務我們都有一個實現和他的接口。但說實話,我很確定,對於一個服務和他的界面,我們永遠不會有一個以上的實現。所以好吧,也許更清楚的是在接口中聲明的公共方法有助於瞭解服務的功能,但是一個接口用於多個實現,如果我們知道我們不會有多個實現,我們應該保留他們?

回答

2

documentation

實現一個接口允許類變得更加正式的關於 它承諾提供的行爲。接口在類和外部世界之間形成合同 ,並且編譯器在構建時強制執行 。

如果您知道只有一個實現,實現本身將定義合約,因此您可以刪除這些接口。

但是編寫一個接口可以幫助您更好地定義合同,並且您可能需要在給定的點爲服務編寫一個模擬,在這種情況下,您將從使用接口中受益。

+0

我同意它可以幫助單元測試,但單元測試不應該驅動開發不是嗎?我沒有提到它,但我們正在使用Spring,並且不使用組件的接口有時可能會帶來問題(因爲Spring使用的代理系統)... – 2015-02-24 11:08:14

+0

我正在討論嘲笑你的服務(返回一個模擬實體列表只是爲了查看您的視圖是否正確顯示集合)。在你的情況下,爲了避免與Spring代理混淆,我肯定會使用接口。看看這個:http://stackoverflow.com/questions/11528061/i-want-to-define-a-spring-bean-class-with-no-interface – antonio 2015-02-24 11:15:31

4

我認爲這是保持接口的好方法。

原因: 1.假設你想爲不同的執行前綴編寫相同的junits。儘管從數據庫獲取數據,您希望從單獨的數據源獲取數據,但是不同的實現就足夠了。