應用場景:確保程序運行期某個類,只有一份實例,用于進行資源共享控制。
優勢:使用簡單,延時求值,易于跨模塊
敏捷原則:單一職責原則
實例:[UIApplication sharedApplication]。
注意事項:確保使用者只能通過 getInstance方法才能獲得,單例類的唯一實例。
java,C++中使其沒有公有構造函數,私有化并覆蓋其構造函數。
object c中,重寫allocWithZone方法,保證即使用戶用 alloc方法直接創建單例類的實例,
返回的也只是此單例類的唯一靜態變量。
@interface Singleton : NSObject
+?(Singleton?*)sharedSingleton;?
@end
//Singleton.m
#import?"Singleton.h"
@implementation?Singleton
static?Singleton?*sharedSingleton?=?nil;
+?(Singleton?*)sharedSingleton{
static?dispatch_once_t?once;
dispatch_once(&once,^{
sharedSingleton?=?[[self?alloc]?init];
//dosometing
});
returnsharedSingleton;
}