本節書摘來自異步社群《android 源碼設計模式解析與實戰》一書中的第2章,第2.4節單例模式uml類圖,作者 何紅輝 , 關愛民,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
2.4 單例模式uml類圖
uml類圖如圖2-1所示。

角色介紹:
(1)client——高層用戶端;
(2)singleton——單例類。
實作單例模式主要有如下幾個關鍵點:
(1)構造函數不對外開放,一般為private;
(2)通過一個靜态方法或者枚舉傳回單例類對象;
(3)確定單例類的對象有且隻有一個,尤其是在多線程環境下;
(4)確定單例類對象在反序列化時不會重新建構對象。
通過将單例類的構造函數私有化,使得用戶端代碼不能通過new的形式手動構造單例類的對象。單例類會暴露一個公有靜态方法,用戶端需要調用這個靜态方法擷取到單例類的唯一對象,在擷取這個單例對象的過程中需要確定線程安全,即在多線程環境下構造單例類的對象也是有且隻有一個,這也是單例模式實作中比較困難的地方。