原因如下:
分別定義接口和實現類是java架構思想中的開閉原則(擴展開放,修改關閉)的體現,例如:
假如你這個注冊剛開始是對國內用戶開放,中國用戶注冊成功返回“注冊成功”,隨着業務擴展,需要海外用戶開放,假如美國用戶返回“register success”,如果你有接口,可以再美國的AmericaUserServiceImpl.java中實現一個UserService.java的接口,來定義美國用戶的注冊業務,而不是在之UserServiceImpl.java中增加if else來對不同邏輯進行處理,這樣,后續如果某個地區的注冊業務有變動,只需要修改對應地區的實現類,修改不會影響到其他地區的實現類,降低了耦合性。
那是不是所有的項目都應該用到這樣思想呢?
對於小型項目來說,確實可以不用多寫一個接口,直接寫實現類就可以了。
接口+實現類是一種良好的編碼習慣而已。就好像寫代碼時候的縮進和駝峰命名法。