獨體模式(Singleton Pattern)確保一個類別只能有一個實體,並給它一個存取的全域點(global point)。
一個類別A被設計成獨體時,若客戶要取得類別A的實體,需直接跟類別A請求,而不是(也無法)實體化類別A。
獨體類別的建構子的存取修飾子為private。
獨體類別要保證,整個環境中最多只有一個實體。
獨體模式至少有四種實作法:
基本型,拖延實體化的方式,not thread safe。
加入synchronized,thread safe,效率略差。
使用率先建立實體方式,可能浪費記憶體。
用「雙重檢查上鎖」(volatile),減少使用synchronized。
獨體模式等於一個class持有兩種責任,該類別本身的責任與創建該類別的則任,雖違反物件守則,但有其價值,依然要視適當情況使用。