前言
單例模式是老生常談的一種設計模式,同時它是最簡單也是最容易被忽視的一種設計模式,
下面是一些個人看法:
(1) 單例類需要保證自己的唯一性,同時也需要避免被繼承,即需要使用sealed修飾;
(2) 餓漢式單例先創建好實體,懶漢式單例在需要的時候再創建實體,個人傾向于后者,因為單例模式一般管理著特定資源,懶漢式單例可以避免在不需要資源的時候也會創建實體;
(3) 懶漢式單例需要在多執行緒環境下保持唯一性,因此需要在創建實體時加鎖,對私有實體做雙重判空(加鎖前、加鎖后),避免創建多個實體;
(4) 對于資源依賴強的單例,需要使用Dispose模式(實作IDisposable介面),
1、單例模式UML圖

2、傳統單例C#實作
public class Singleton
{
private static Singleton _instance;
private Singleton()
{
}
public static Singleton Instance
{
get
{
if (_instance == null)
{
_instance = new Singleton();
}
return _instance;
}
}
}
3、演進單例C#實作
public sealed class Singleton
{
private static Singleton _instance;
private static readonly object LockHelper = new object();
private Singleton()
{
}
public static Singleton Instance
{
get
{
if (_instance != null)
{
return _instance;
}
lock (LockHelper)
{
_instance = _instance ?? new Singleton();
}
return _instance;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/35331.html
標籤:設計模式
上一篇:代理模式
