单例模式优点
单例模式在内存中只有一个实例,减少了内存开支。特别是一个对象需要频繁的创建、销毁时,而创建与销毁的性能有无法优化,单例模式的优势就非常明显。
单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决。
单例模式可以避免对资源的多重占用。
单例模式可以在系统设置全局的访问点,优化和共享资源访问。
单例模式缺点
单例模式一般没有接口,扩展很困难,除了修改代码基本上没有第二种途径实现。
单例模式对测试是不利的。在并行开发环境中,如果单例模式没有完成,是不能进行测试的。
单例模式与单一职责原则有冲突。
单例模式在iOS中的使用
单例模式在iOS开发中的使用还是蛮多的,许多Foundation、Cocoa和UIKit中的类都实现了单例模式,比如应用程序本身UIApplication、文件操作类NSFileManager、消息中心NSNotificitonCenter等系统都已经给我们实现单例,我们只需要使用就好了。在iOS中使用单例模式要使用类方法,通过类方法返回该类的唯一对象。
具体实现
在.h文件中
+(UserInfoModel *)sharedInstance; 声明方法
.m文件中实现方法
+ (UserInfoModel *)sharedInstance
{
static UserInfoModel *instance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[UserInfoModel alloc]init];
});
return instance;
}
调用类中每次实例化都会指向一个固定的 内存地址
UserInfoModel*model = [UserInfoModel sharedInstance];