|
概述
Singleton模式要求一個類有且僅有一個實例,并且提供了一個全局的訪問點。這就提出了一個問題:如何繞過常規(guī)的構(gòu)造器,提供一種機制來保證一個類只有一個實例?客戶程序在調(diào)用某一個類時,它是不會考慮這個類是否只能有一個實例等問題的,所以,這應(yīng)該是類設(shè)計者的責(zé)任,而不是類使用者的責(zé)任。
從另一個角度來說,Singleton模式其實也是一種職責(zé)型模式。因為我們創(chuàng)建了一個對象,這個對象扮演了獨一無二的角色,在這個單獨的對象實例中,它集中了它所屬類的所有權(quán)力,同時它也肩負了行使這種權(quán)力的職責(zé)!
意圖
保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。
模型圖
邏輯模型圖:
物理模型圖:
生活中的例子
美國總統(tǒng)的職位是Singleton,美國憲法規(guī)定了總統(tǒng)的選舉,任期以及繼任的順序。這樣,在任何時刻只能由一個現(xiàn)任的總統(tǒng)。無論現(xiàn)任總統(tǒng)的身份為何,其頭銜"美利堅合眾國總統(tǒng)"是訪問這個職位的人的一個全局的訪問點。
以下是五種實現(xiàn):
1.簡單實現(xiàn)
public sealed class Singleton
{
static Singleton instance=null;
Singleton()
{
}
public static Singleton Instance
{
get
{
if (instance==null)
{
instance = new Singleton();
}
return instance;
}
}
}
NET技術(shù):.NET設(shè)計模式:單件模式(Singleton Pattern),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。