Java工具包Hutool,簡化代碼,減少方法,讓Java也可以「甜甜的」

  • hutool-setting 功能更強大的Setting配置文件和Properties封裝

  • hutool-system 系統參數調用封裝(JVM信息等)

  • hutool-json JSON實現

  • hutool-captcha 圖片驗證碼實現

  • Java工具包Hutool,簡化代碼,減少方法,讓Java也可以“甜甜的”

    Java工具包Hutool,簡化代碼,減少方法,讓Java也可以“甜甜的”

    Java工具包Hutool,簡化代碼,減少方法,讓Java也可以“甜甜的”

    Java工具包Hutool,簡化代碼,減少方法,讓Java也可以“甜甜的”

    。。。等等。我就不一一列舉了。

    設計哲學

    1. 方法優先於對象

    在工具類中,往往以靜態方法為主。方法集中在一個類中,配合IDE查找使用起來是十分便利的。於是Hutool將JDK中許多的類總結抽象為一個方法,這一原則使用最多的就是流的相關方法,這些方法很好的隱藏了XXXInputStream、XXXReader等的複雜性。

    2. 自動識別優於用戶定義

    其實很多時候,有些參數、設置等是沒有必要我們自己傳入的,完全可以靠邏輯判斷自動完成。一個方法很多時候明明只需要傳3個參數,我們非要傳4個,這多出的一個參數本身就是代碼的一種冗餘。

    這一原則在Hutool的各個角落都有所體現,尤為明顯的比如log模塊。構建日誌對象的時候,很明顯類名可以動態獲取,何必讓使用者再傳入呢?再比如在db模塊的數據庫配置中,數據庫驅動命名完全可以根據連接字符串判斷出來,何必要讓用戶傳入?這些問題的在Hutool中都有非常好的封裝,而這一原則也漸漸變成Hutool哲學的一部分。

    3. 便捷性與靈活性並存

    所謂便捷性,就是我們在調用一個方法的時候參數要儘量少,只傳必要參數即可,非必要參數使用默認值即可(想想一個方法一堆參數的時候,調用者暈頭轉向不知所云)。

    所謂靈活性正好與便捷性相反,要讓一個方法的參數儘量多,為用戶靈活的操作方法提供最大可能性。

    這兩個原則看似矛盾,其實只是針對不同場景設定的而已,缺一不可。便捷性強調拿來即用,為快速開發提供可能;靈活性強調最大限度調優,為性能調優和擴展提供便利。

    這一原則在針對編碼問題上體現尤為突出,我們的大部分方法都是默認“UTF-8”編碼的,這也是我們推薦的編碼方式,推薦大部分項目使用的編碼。但是一旦有遺留項目使用了類似“GBK”等編碼,沒關係,我們提供在相關方法中提供Charset對象參數,可以自定義編碼。這樣使用這一原則就兼顧了各種項目的情況。

    4. 適配與兼容

    在Hutool中,適配器模式運用特別廣泛,log模塊適配主流各大框架,db模塊適配主流各種連接池和關係數據庫。這種適配一是提高靈活性,二是可以很好的兼容各大框架,讓Hutool可以在各種複雜項目環境中生存的很好。

    適配兼容產生的另一個原則是:你有我配,你無我有。說白了就是:如果你項目中有這個框架,我可以完美適配,如果你沒有引入任何框架,Hutool自身實現了一些邏輯可以很好的工作。

    5. 可選依賴原則

    在Java項目中依賴常常是個頭疼的問題,不同的框架強依賴另一些框架或包,雖然Maven可以很好的處理衝突問題,但是項目底下滿滿的依賴jar包,是不是無形中拖慢了項目,也增加了複雜性和不確定性?而很多時候,我們是不是隻是為了用一個小小的方法,就要引入一個第三方包,誰喜歡這樣臃腫的項目?

    Hutool中也會有一些依賴,但是全部都是optional的,在使用中不會關聯依賴,而這些依賴只有在使用者使用到時才會調用,這時可能會報ClassNotFoundException,不用擔心,我們自己引入即可。為什麼要這樣做呢?以VelocityUtil這個工具類為例,使用Velocity的人佔比極少,我們不能為了這些用戶而強引入Velocity包,而使用這個工具類的人應該明白,我們應該自己引入這個包。

    而更多時候,我們需要用到某個方法時,我的做法是將方法拷貝到項目中(Hutool中的方法正在不斷積累),類似於Apache Commons中的方法,Hutool中基本都有取代方法,完全不必要引入。

    可選依賴原則讓我們的項目更加精簡,問題也更容易排查。

    6. 無侵入原則

    Hutool始終是一個工具類而不是框架,這意味著它對項目的侵入幾乎為零,每個方法都是可被代替的,甚至整個Hutool也是可被替換的。這種無侵入性,讓使用者可以更加放心的在項目中引入,也保證了與其它框架完美的兼容。

    安裝

    Maven

    在項目的pom.xml的dependencies中加入以下內容:

    cn.hutoolhutool-all4.0.8

    Java工具包Hutool,簡化代碼,減少方法,讓Java也可以“甜甜的”


    分享到:


    相關文章: