一、UML圖
二、包含的角色
Singleton類,定義一個GetInstance操作,允許客戶訪問它的唯一實例。
三、特點
因爲Singleton類封裝它的唯一實例,這樣它可以嚴格的控制客戶怎麼訪問它以及何時訪問它。簡單的說就是對唯一實例的受控訪問。
四、代碼實現
c# 餓漢式
public sealed class Singleton
{
private Singleton() { }
private static readonly Singleton instance = new Singleton();
public static Singleton GetInstance()
{
return instance;
}
public void Operation() {
// TODO implement here
}
}
front end
Singleton::GetInstance().Operation();
c++ 餓漢式
class Singleton
{
private:
Singleton() {}
static Singleton *instance;
public:
static Singleton *GetInstance();
void Operation();
};
Singleton *Singleton::instance = new Singleton();
Singleton *Singleton::GetInstance()
{
return instance;
}
void Singleton::Operation()
{
}
front end
Singleton::GetInstance()->Operation();
以上例子爲餓漢式單例最簡單的一種寫法,意在說明這類設計模式。其他實現不在這裏討論