一、 什么是单例模式
保证系统中一个类只有一个实例并且提供全局入口访问这个实例。
常用的单例使用情景有: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.单例只要程序不销毁就一直存在,消耗了系统内存资源