定義
保證一個(gè)類僅有一個(gè)實(shí)例扛芽,并提供一個(gè)全局訪問點(diǎn)尉辑;
適用場景
- 想確定任何情況下都絕對只有一個(gè)實(shí)例情萤;
優(yōu)點(diǎn)
- 在內(nèi)存里只有一個(gè)實(shí)例鸭蛙,減少內(nèi)存開銷;
- 遇到頻繁創(chuàng)建銷毀一個(gè)對象的時(shí)候筋岛,提高性能娶视;
- 設(shè)置全局訪問點(diǎn),嚴(yán)格控制訪問睁宰;
缺點(diǎn)
- 沒有接口肪获,擴(kuò)展困難;
- 如果一個(gè)類的對象的狀態(tài)要來回變化柒傻,單例就不適合孝赫;
- 單例類的職責(zé)過重,一定程度上違背“單一職責(zé)原則”红符;
重點(diǎn)
- 私有構(gòu)造器青柄;
- 線程安全;
- 延遲加載预侯;
- 序列化和反序列化的安全致开;
- 防止反射攻擊;
- Double Check雌桑;
- 靜態(tài)內(nèi)部類的實(shí)現(xiàn)方案(基于類初始化的延遲加載解決方案)喇喉;
實(shí)用技能
- 反編譯;
- 內(nèi)存原理校坑;
- 多線程Debug拣技;
單例相關(guān)設(shè)計(jì)模式
- 單例模式和工廠模式千诬;
- 單例模式和享元模式;