單例模式

單例模式

單例模式:單例模式確保某一個(gè)類只有一個(gè)實(shí)例靠欢,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例倘屹,這個(gè)類稱為單例類记劝,它提供全局訪問的方法。
要點(diǎn):1.某個(gè)類只能有一個(gè)實(shí)例 2. 它必須自行創(chuàng)建這個(gè)單例吕粹。 3.它必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例种柑。單例模式是一種對象創(chuàng)建行模式。
實(shí)現(xiàn)過程: 1.單例類的構(gòu)造函數(shù)為私有 2. 提供一個(gè)自身的靜態(tài)私有成員變量匹耕。 3.提供一個(gè)公有的靜態(tài)工廠方法聚请。
注解:該模式中包含一個(gè)靜態(tài)私有成員變量與靜態(tài)公有的工廠方法,該工廠方法負(fù)責(zé)檢驗(yàn)實(shí)例的存在性并實(shí)例化自己稳其,然后存儲在靜態(tài)成員變量中驶赏,以確保只有一個(gè)實(shí)例被創(chuàng)建。
 總結(jié)
* 單例模式確保某一個(gè)類只有一個(gè)實(shí)例既鞠,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例煤傍,這個(gè)類稱為單例類,它提供全局訪問的方法嘱蛋。單例模式的要點(diǎn)有三個(gè):一是某個(gè)類只能有一個(gè)實(shí)例蚯姆;二是它必須自行創(chuàng)建這個(gè)實(shí)例;三是它必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例洒敏。單例模式是一種對象創(chuàng)建型模式龄恋。
* 單例模式只包含一個(gè)單例角色:在單例類的內(nèi)部實(shí)現(xiàn)只生成一個(gè)實(shí)例,同時(shí)它提供一個(gè)靜態(tài)的工廠方法凶伙,讓客戶可以使用它的唯一實(shí)例郭毕;為了防止在外部對其實(shí)例化,將其構(gòu)造函數(shù)設(shè)計(jì)為私有函荣。
* 單例模式的目的是保證一個(gè)類僅有一個(gè)實(shí)例显押,并提供一個(gè)訪問它的全局訪問點(diǎn)。單例類擁有一個(gè)私有構(gòu)造函數(shù)傻挂,確保用戶無法通過new關(guān)鍵字直接實(shí)例化它乘碑。除此之外,該模式中包含一個(gè)靜態(tài)私有成員變量與靜態(tài)公有的工廠方法踊谋。該工廠方法負(fù)責(zé)檢驗(yàn)實(shí)例的存在性并實(shí)例化自己蝉仇,然后存儲在靜態(tài)成員變量中旋讹,以確保只有一個(gè)實(shí)例被創(chuàng)建殖蚕。
* 單例模式的主要優(yōu)點(diǎn)在于提供了對唯一實(shí)例的受控訪問并可以節(jié)約系統(tǒng)資源轿衔;其主要缺點(diǎn)在于因?yàn)槿鄙俪橄髮佣y以擴(kuò)展,且單例類職責(zé)過重睦疫。
* 單例模式適用情況包括:系統(tǒng)只需要一個(gè)實(shí)例對象害驹;客戶調(diào)用類的單個(gè)實(shí)例只允許使用一個(gè)公共訪問點(diǎn)。
  • 單例類的生命周期
位置 存放的變量
臨時(shí)變量(由編譯器管理自動創(chuàng)建/分配/釋放的蛤育,棧中的內(nèi)存被調(diào)用時(shí)處于存儲空間中宛官,調(diào)用完畢后由系統(tǒng)系統(tǒng)自動釋放內(nèi)存)
通過alloc、calloc瓦糕、malloc或new 申請內(nèi)存底洗,由開發(fā)者手動在調(diào)用之后通過free或delete釋放內(nèi)存。動態(tài)生存的生存期可以由我們決定咕娄,如果我們不釋放內(nèi)存亥揖,程序?qū)⒃谧詈蟛裴尫诺魟討B(tài)內(nèi)存,在ARC模式下圣勒,系統(tǒng)自動管理费变。
全局區(qū) 靜態(tài)變量(編譯時(shí)分配,APP結(jié)束時(shí)由系統(tǒng)釋放)
常量區(qū) 常量(編譯時(shí)分配圣贸,APP結(jié)束時(shí)由系統(tǒng)釋放)
代碼區(qū) 存放代碼

在程序中挚歧,一個(gè)單例類在程序中只能初始化一次,為了保證在使用中始終都是存在的吁峻,所以單例是在存儲器的全局區(qū)域滑负,在編譯時(shí)分配內(nèi)存,只要程序還在運(yùn)行就會一直占用內(nèi)存用含,在APP結(jié)束后由系統(tǒng)釋放這部分內(nèi)存內(nèi)存橙困。

ps: load方法是在整個(gè)文件被加載到運(yùn)行時(shí),在main函數(shù)調(diào)用之前調(diào)用耕餐;
initialize方法是在該類第一次調(diào)用該類時(shí)調(diào)用凡傅;

+(instancetype) sharedInstance{
         static Singleton * _instance = nil;
      static dispatch_once_t onceToken;
      dispatch_once(&onceToken, ^{
      _instance= [[self alloc] init];
     });
    return _instance;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市肠缔,隨后出現(xiàn)的幾起案子夏跷,更是在濱河造成了極大的恐慌,老刑警劉巖明未,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件槽华,死亡現(xiàn)場離奇詭異,居然都是意外死亡趟妥,警方通過查閱死者的電腦和手機(jī)猫态,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人亲雪,你說我怎么就攤上這事勇凭。” “怎么了义辕?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵虾标,是天一觀的道長。 經(jīng)常有香客問我灌砖,道長璧函,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任基显,我火速辦了婚禮蘸吓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撩幽。我一直安慰自己美澳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布摸航。 她就那樣靜靜地躺著制跟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酱虎。 梳的紋絲不亂的頭發(fā)上雨膨,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天,我揣著相機(jī)與錄音读串,去河邊找鬼聊记。 笑死,一個(gè)胖子當(dāng)著我的面吹牛恢暖,可吹牛的內(nèi)容都是我干的排监。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼杰捂,長吁一口氣:“原來是場噩夢啊……” “哼舆床!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嫁佳,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤挨队,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蒿往,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盛垦,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年瓤漏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了腾夯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颊埃。...
    茶點(diǎn)故事閱讀 38,683評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蝶俱,靈堂內(nèi)的尸體忽然破棺而出班利,到底是詐尸還是另有隱情,我是刑警寧澤跷乐,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站趾浅,受9級特大地震影響愕提,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜皿哨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一浅侨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧证膨,春花似錦如输、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至崔步,卻和暖如春稳吮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背井濒。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工灶似, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瑞你。 一個(gè)月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓酪惭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親者甲。 傳聞我的和親對象是個(gè)殘疾皇子春感,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評論 2 349