java工具類編寫思考
初衷
這篇部落格的初衷是因為我想寫一個工具類,同時對工具類做出一些規範以及優化。
規範
- 工具類定義為
final class
,考慮到工具類應該不能被繼承 - 工具類的命名應該用
Util
結尾,例如LogUtil
- 工具類的構造方法應該首選是
private
的,同時工具類的工具方法為static
的 - 工具類使用單例模式,或者
static
初始化某個單例。這個規範是因工具的不同而不同的,例如我要寫一個gson
的工具類,不應該在每個方法裡都new Gson()
再進行操作,如果一個類大量呼叫GsonUtil
,那就會大量建立gson
物件。
針對第四種,給點示例程式碼,首先是靜態塊初始化方式:
public final class GsonUtil {
private static Gson gson = null;
static {
if (gson == null) {
gson = new Gson();
}
}
private GsonUtil() {
}
}
然後是單例模式初始化方式:
public final class GsonUtil{
private static volatile Gson gson;
private static Gson initInstance(){
if(gson == null){
synchronized(GsonUtil){
if(gson == null){
gson = new Gson();
}
}
}
}
private GsonUtil() {
initInstance();
}
}
擴充
上面是我自己思考的,然後我又看了一些其他資料,主要是說:
編寫工具類倆種方式:
一:
1.工具方法都設為非static方法
2.將工具類設計為單列模式
3.注意這種方式需要獲取工具類物件(例項化)才能呼叫方法
二:
1.工具方法設計為static方法
2.工具 類所有構造方法都設計為private修飾
3.工具類本身以abstract修飾(目的就是隻能用類呼叫方法,不能例項化)
說靜態類好的:
靜態類不用引用就能呼叫,而單例需要有物件的引用,因此節約資源(我覺得這個影響微乎其微,可以忽略)
靜態類方便,隨處可用;而單例必須有引用,需要注入或者new(是有點麻煩,我上次寫靜態類也是因為這個原因)
說單例好的:
單例模式的類是普通的類,它具有物件導向的特性,方便擴充套件
對於有配置的工具類,可以輕鬆的建立多個不同配置的單例物件(想起我主導的另一個專案就存在5-6個redis資料來源,如果使用靜態類就是災難)
因此,得出以下結論:
如果沒有配置資訊的工具類,當然是靜態類好,隨處呼叫,不需引用爽得不要不要的。比如Math.abs(),如果寫個單例,可能全世界都要笑話你了。
如果有配置資訊的工具類,最好還是使用單例模式吧,這樣以後如果有多個資料來源,你會感謝你自己。
區別
我在靜態方法裡使用的單例模式,不是指的是我的工具類作為單例,而是第三方的類。
如有錯誤請指正。
相關文章
- java工具類之編碼轉換工具類Java
- 【安卓筆記】硬碟快取工具類的編寫安卓筆記硬碟快取
- 萬能java字串編碼轉換工具類Java字串編碼
- 基於MessageDigest類編寫MD5通用工具類
- Java程式編寫Java
- 編寫高質量程式碼的思考
- 請問大家使用什麼樣的工具編寫javaJava
- Java —— 集合工具類(Collections 類)Java
- java http 工具類JavaHTTP
- java Redis工具類JavaRedis
- Java 工具類庫Java
- 關於寫作工具和平臺的思考
- Java容器工具類ArraysJava
- java時間工具類Java
- Java之Collections工具類Java
- java反編譯工具Java編譯
- 手寫一個LRU工具類
- 近期求職關於簡歷編寫的思考求職
- java ftp工具類,帶你領略5款不同的java ftp工具類JavaFTP
- java 常用工具類Java
- 極光推送-java工具類Java
- java常用工具類Java
- 編寫一個介面壓測工具
- 寫在開始編寫Java之前(2)——Java的環境Java
- 關於工作當中系統引擎到底是用手寫還是用類似yacc工具編寫?
- java安全編碼指南之:方法編寫指南Java
- 編寫高效的執行緒安全類執行緒
- java寫的 聚類搜尋Java聚類
- 【Java】手工編寫JavaWeb專案!JavaWeb
- Java編寫定時任務Java
- 編寫JAVA儲存過程Java儲存過程
- 用Java編寫ASP元件 (轉)Java元件
- 幹掉複雜的工具類,國產Java工具類庫 Hutool 很香!Java
- Java 通過Xml匯出Excel檔案,Java Excel 匯出工具類,Java匯出Excel工具類JavaXMLExcel
- Hutool—好用的 Java 工具類庫Java
- 排名前16的Java工具類Java
- java Freemarker 模版引擎工具類Java
- java8特性 Optional 工具類Java