1棠众、考慮以靜態(tài)工廠方法代替構(gòu)造函數(shù)
優(yōu)點(diǎn):
靜態(tài)工廠方法有確切名稱;
靜態(tài)工廠方法不需要在每次調(diào)用時(shí)創(chuàng)建新對(duì)象;
可以通過(guò)靜態(tài)工廠方法獲取返回類型的任何子類的對(duì)象越平;
返回對(duì)象的類可以隨調(diào)用的不同而變化,作為輸入?yún)?shù)的函數(shù)灵迫;
當(dāng)編寫包含方法的類時(shí)秦叛,返回對(duì)象的類不需要存在。?
缺點(diǎn):
沒(méi)有公共或受保護(hù)構(gòu)造函數(shù)的類不能被子類化瀑粥;(優(yōu)先考慮復(fù)合而不是繼承)
程序員很難找到它們挣跋;(from,of狞换,valueOf避咆,getInstance舟肉,newInstance,getType查库,newType路媚,type)
2、當(dāng)構(gòu)造函數(shù)有多個(gè)參數(shù)時(shí)樊销,考慮改用構(gòu)建器
3整慎、使用私有構(gòu)造函數(shù)或枚舉類型強(qiáng)化Singleton屬性
4、用私有構(gòu)造函數(shù)實(shí)施不可實(shí)例化
5现柠、依賴注入優(yōu)于硬連接資源
6院领、避免創(chuàng)建不必要的對(duì)象
7、排除過(guò)時(shí)的對(duì)象引用
8够吩、避免使用終結(jié)器和清除器
9比然、使用 try-with-resources 優(yōu)于 try-finally
在使用必須關(guān)閉的資源時(shí),總是優(yōu)先使用 try-with-resources周循,而不是 try-finally强法。前者的代碼更短、更清晰湾笛,生成的異常更有用饮怯。使用 try-with-resources 語(yǔ)句可以很容易地為必須關(guān)閉的資源編寫正確的代碼,而使用 try-finally 幾乎是不可能的嚎研。
10蓖墅、覆蓋 equals 方法時(shí)應(yīng)遵守的約定
反身性:對(duì)于任何非空的參考值 x,x.equals(x)?必須返回 true临扮。
對(duì)稱性:對(duì)于任何非空參考值 x 和 y论矾,x.equals(y)?必須在且僅當(dāng)?y.equals(x)?返回 true 時(shí)返回 true。
傳遞性:對(duì)于任何非空的引用值 x, y, z杆勇,如果?x.equals(y)?返回 true贪壳,y.equals(z)?返回 true,那么?x.equals(z)?必須返回 true蚜退。
一致性:對(duì)于任何非空的引用值 x 和 y,?x.equals(y)?的多次調(diào)用必須一致地返回 true 或一致地返回 false闰靴,前提是不修改 equals 中使用的信息。
非空性:對(duì)于任何非空引用值 x钻注,x.equals(null)?必須返回 false蚂且。
警告:
當(dāng)你覆蓋 equals 時(shí),也覆蓋 hashCode幅恋。
不要自作聰明膘掰。?一般來(lái)說(shuō),考慮到任何形式的混疊都不是一個(gè)好主意。
不要用另一種類型替換 equals 聲明中的對(duì)象识埋。