1.情景展示
如上圖所示,每個服務層都需要注入這個工具類對象
2.原因分析
如果我們每個實現類都加上這樣一行代碼,實屬麻煩;
既然每個類都需要,那我們就可以把它視為公共屬性,為了承載這個公共屬性,我們就需要創建一個父類,在java中,父類通常是一個抽象類。
3.解決方案
將公有屬性放到父類中,接口實現類作為子類繼承父類。
這里需要說明的有兩點:
第一,抽象類也可以使用spring注解完成對象的注入;
第二,通常我們在一個類中注入對象時,會將該屬性私有化,也就是使用private修飾,這樣一來該屬性會變成類的私有屬性,也就是該屬性只能在該類中被調用;顯然,用到這里不合適,因為我們需要它的子類也能訪問得到該屬性,所以使用protected修飾。
子類使用繼承該類后,就可以直接使用這個屬性啦
使用父類的另一個好處是:方便后期擴展公有屬性和方法
4.測試
對象czUrlUtils能夠正常獲取到。
5.擴展
對於幾個個別的接口,僅僅依賴czUrlUtils對象工具類是不夠的,比如還需要另外兩個工具類
我們可以把這兩個抽出來再作為一個公共類的屬性,將公共類作為父類,父類繼承上面的那個父類
該實現類繼承新生成的父類。