一、 什么是單例模式
保證系統中一個類只有一個實例並且提供全局入口訪問這個實例。
常用的單例使用情景有:UIApplication(應用程序實例類) NSNotificationCenter(消息中心類) NSFileManager(文件管理類) NSUserDefaults(應用程序設置) NSURLCache(請求緩存類) NSHTTPCookieStorage(應用程序cookies池)
二、 單例模式的基本實現
#pragma mark === 單例
+(instancetype)sharedManager
{
static TangLinHFNetWorkManager* manager=nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
if (manager == nil) {
manager=[[TangLinHFNetWorkManager alloc]init];
}
});
return manager;
}
這個是我平時網絡請求使用的單例類。
為了防止重復創建,有兩種方法解決:一是直接禁用他的創建方法,然后提示一個錯誤信息。第二種就是重寫幾種創建方法。
三、 單例模式的優缺點
優點:
1.提供了對唯一實例的受控訪問,很使用簡單,易於跨模塊。
2.由於在系統內存中只存在一個對象,因此可以節約系統資源,對於一些需要頻繁創建和銷毀的對象單例模式無疑可以提高系統的性能。
3.因為單例模式的類控制了實例化的過程,所以類可以更加靈活修改實例化過程。
缺點:
1.不易被重寫或擴展
2.不能被繼承
3.單例只要程序不銷毀就一直存在,消耗了系統內存資源