单例的写法以及使用场景
//单例的写法
1.创建一个继承自OSobject的文件
LMSingletion
static LMSingletion *singletion = nil;
+(instancetype)shareInstance{
static dispatch>once_t onceToken;
dispatch_once(&onceToken,^{
singletion = [[super allocWithZone:NULL]init];
})
return singletion;
}
+(id)allocWithZone:(struct _NSZone *)zone{
return [LMSingletion shareInstance];
}
-(id)copyWithZone:(struct _NSZone *)zone
{
return [LMSingleton shareInstance] ;
}
//使用场景:
单例模式只允许常见一个对象,因此节省内存,加快对象访问,因此对象需要被公用的场合适合使用,如多个模块使用同一个数据源连接对象等
1.资源共享情况下没避免由于资源操作时导致的性能或者损耗等如日志文件,应用配置
2.控制资源的情况下, 方便资源之间的额互相通信,如线程池等
单例模式的原则和过程
1.单例模式:确保一个类只有一个实例,自行实例化并向系统提供这个实例
2.单例模式分类:饿单例模式(类加载实例化一个对象给自己引用),懒单例模式(调用取得实例的方法如shareInstance时才会实例化对象)
3.单例模式要素:1>私有构造方法2>私有静态引用指向自己实例3>以自己实例为返回值的公有静态方法
网友评论