Unity-單例模式

單例模式(Singleton Pattern)

是最簡單的設(shè)計(jì)模式之一台猴。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式虐骑,它提供了一種創(chuàng)建對(duì)象的最佳方式鲁驶。
這種模式涉及到一個(gè)單一的類鉴裹,該類負(fù)責(zé)創(chuàng)建自己的對(duì)象,同時(shí)確保只有單個(gè)對(duì)象被創(chuàng)建钥弯。這個(gè)類提供了一種訪問其唯一的對(duì)象的方式径荔,可以直接訪問,不需要實(shí)例化該類的對(duì)象脆霎。

注意:
1总处、單例類只能有一個(gè)實(shí)例。
2睛蛛、單例類必須自己創(chuàng)建自己的唯一實(shí)例鹦马。
3、單例類必須給所有其他對(duì)象提供這一實(shí)例忆肾。

C#版本的 Singleton 類荸频。

public class Singleton {

   //創(chuàng)建 Singleton的一個(gè)對(duì)象
   private static Singleton instance = new Singleton();

   //獲取唯一可用的對(duì)象
   public static Singleton GetInstance(){
      return instance;
   }

   //讓構(gòu)造函數(shù)為 private,這樣該類就不會(huì)被其他類實(shí)例化
   private Singleton(){}

   public void showMessage(){
      print("Hello World!");
   }
}

使用方式

Singleton.GetInstance().showMessage();

Unity版本的Singleton類难菌。

public class Singleton: MonoBehaviour {

    //私有的靜態(tài)實(shí)例
    private static Singleton_instance = null;
    //共有的唯一的试溯,全局訪問點(diǎn)
    public static Singleton Instance
    {
        get
        {
            if (_instance == null)
            {    //查找場(chǎng)景中是否已經(jīng)存在單例
                _instance = GameObject.FindObjectOfType<Singleton>();
                if (_instance == null)
                {    //創(chuàng)建游戲?qū)ο笕缓蠼壎▎卫_本
                    GameObject go = new GameObject("Singleton");
                    _instance = go.AddComponent<Singleton>();
                }
            }
            return _instance;
        }
    }

    private void Awake()
    {    //防止存在多個(gè)單例
        if (_instance == null)
            _instance = this;
        else
            Destroy(gameObject);
    }

    public void showMessage()
    {
        print("Hello World!");
    }
}

使用方式

Singleton .Instance.showMessage();

泛型單例模板

class Singleton<T> where T: class,new()  
{  
    private static T _instance;  
    private static readonly object syslock=new object();  
  
    public static T getInstance()   
    {  
        if (_instance == null)  
        {  
            lock (syslock) {  
                if (_instance == null)  
                {  
                    _instance = new T();  
                }  
            }  
        }  
       return _instance;  
    }  
}  

使用方式

class myclass : Singleton<myclass> {  
    public void showMessage() 
    {  
        Console.WriteLine("Hello World");  
    }  
}  
myclass.getInstance().showMessage();

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市郊酒,隨后出現(xiàn)的幾起案子遇绞,更是在濱河造成了極大的恐慌键袱,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摹闽,死亡現(xiàn)場(chǎng)離奇詭異蹄咖,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)付鹿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門澜汤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人舵匾,你說我怎么就攤上這事俊抵。” “怎么了坐梯?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵徽诲,是天一觀的道長。 經(jīng)常有香客問我吵血,道長谎替,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任蹋辅,我火速辦了婚禮钱贯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘侦另。我一直安慰自己秩命,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布淋肾。 她就那樣靜靜地躺著硫麻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪樊卓。 梳的紋絲不亂的頭發(fā)上拿愧,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音碌尔,去河邊找鬼浇辜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播傻挂,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼熊镣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤绪囱,失蹤者是張志新(化名)和其女友劉穎测蹲,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鬼吵,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扣甲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了齿椅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琉挖。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖涣脚,靈堂內(nèi)的尸體忽然破棺而出示辈,到底是詐尸還是另有隱情,我是刑警寧澤涩澡,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布顽耳,位于F島的核電站坠敷,受9級(jí)特大地震影響妙同,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜膝迎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一粥帚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧限次,春花似錦芒涡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至羊始,卻和暖如春旱幼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背突委。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國打工柏卤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人匀油。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓缘缚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親敌蚜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子桥滨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 單例模式(SingletonPattern)一般被認(rèn)為是最簡單、最易理解的設(shè)計(jì)模式,也因?yàn)樗暮啙嵰锥朊剑琼?xiàng)目中最...
    成熱了閱讀 4,257評(píng)論 4 34
  • 前言 本文主要參考 那些年酸舍,我們一起寫過的“單例模式”。 何為單例模式里初? 顧名思義啃勉,單例模式就是保證一個(gè)類僅有一個(gè)...
    tandeneck閱讀 2,517評(píng)論 1 8
  • 1 單例模式的動(dòng)機(jī) 對(duì)于一個(gè)軟件系統(tǒng)的某些類而言,我們無須創(chuàng)建多個(gè)實(shí)例双妨。舉個(gè)大家都熟知的例子——Windows任務(wù)...
    justCode_閱讀 1,433評(píng)論 2 9
  • 【學(xué)習(xí)難度:★☆☆☆☆淮阐,使用頻率:★★★★☆】直接出處:單例模式梳理和學(xué)習(xí):https://github.com/...
    BruceOuyang閱讀 680評(píng)論 1 2
  • 有時(shí)候會(huì)覺得一切都是那么的不真實(shí),可這不真實(shí)的背后卻都是歷歷在目的經(jīng)過刁品,不管是否愿意承認(rèn)自己的觀點(diǎn)泣特,但事實(shí)只能為自...
    虛偽愛閱讀 288評(píng)論 0 0