11 單例設計模式

2021-07-04 06:34:58 字數 2346 閱讀 1906

單例設計模式運用較為普遍,廣泛且較為簡單的設計模式之一,它的設計原理是始終返回乙個例項,即乙個類始終只有乙個例項.

建立單例設計模式的基本步驟:

1) 宣告乙個單例物件的靜態例項,並初始化為nil;

2) 建立乙個類的類工廠方法,生成乙個該類的例項,當且僅當這個類的例項為nil時

3) 覆蓋allocwithzone:方法,確保使用者(程式設計師)在直接分配和初始化物件是,不會產生另乙個物件.

4) 實現nscopying協議,覆蓋release,autorelease,retain,retaincount方法,以此確保單例的狀態.

5) 在多執行緒環境中,注意使用@synchronized(同步鎖)關鍵字,確保靜態例項被正確的建立和初始化;

#import 

@inte***ce

usercontext : nsobject

@property(nonatomic,copy)nsstring *username;

@property(nonatomic,copy)nsstring *email;

+ (id)shareusercontext;

@end

#import "usercontext.h"

static usercontext *segtoninstance = nil;

@implementation

usercontext

+ (id)shareusercontext

}return segtoninstance;

}#pragma mark - 下面的方法為了確保只有乙個例項物件

+ (id)allocwithzone:(nszone *)zone

return segtoninstance;

}- (id)copywithzone:(nszone *)zone

- (id)retain

- (oneway void)release

- (id)autorelease

- (nsuinteger)retaincount

@end

usercontext *usercontext = [usercontext shareusercontext];

usercontext *usercontext2 = [usercontext shareusercontext];

usercontext *usercontext3 = [[usercontext alloc] init];

usercontext *usercontext4 = [usercontext copy];

//上面幾個物件指向同乙個位址

[usercontext release];

[usercontext release];

[usercontext release];

[usercontext release];

nslog(@"%p",usercontext);//--->0x100109ec0

nslog(@"%p",usercontext2);//--->0x100109ec0

nslog(@"%p",usercontext3);//--->0x100109ec0

nslog(@"%p",usercontext4);//--->0x100109ec0

singleton.h和singleton.m檔案

#import 

@inte***ce

singleton : nsobject

@property(nonatomic,copy)nsstring *username;

+ (singleton *)sharesingleton;

@end

#import "singleton.h"

@implementation

singleton

+ (singleton *)sharesingleton

//關鍵字@synchronized同步鎖,表示同一時間只能有乙個執行緒訪問

@synchronized(self)

}static

dispatch_once_t onetoken;

//能保證當前這個物件只能被建立一次

dispatch_once(&onetoken, ^);

return single;

}@end

viewcontroller.m檔案的viewdidload方法裡面

- (void)viewdidload

單例設計模式(餓漢單例設計模式 懶漢單例設計模式)

1.什麼是單例 單例的意思是乙個類永遠只存在乙個物件,不能建立多個物件。2.為什麼要用單例 開發中有很多的物件我們只需要乙個,例如虛擬機器物件,任務管理器物件 物件越多越佔記憶體,有時候只需要乙個物件就可以實現業務,單例可以節省記憶體空間。3.如何實現單例 單例的實現方式有 餓漢單例設計模式 通過類...

設計模式 單例設計模式

歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...

設計模式 單例設計模式

單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項 單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。單例設計模式 解決的問題 可以保...