单例的优缺点与创建

2016-08-19  本文已影响0人  _blank

/*

单例模式的优点:

单例模式在内存中只有一个实例,减少了内存开支。特别是一个对象需要频繁的创建、销毁时,而创建与销毁的性能又无法优化,单例模式的优势就非常明显。

单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决。

单例模式可以避免对资源的多重占用。

单例模式可以在系统设置全局的访问点,优化和共享资源访问。

单例模式的缺点:

单例模式一般没有接口,扩展很困难,除了修改代码基本上没有第二种途径实现。

单例模式对测试是不利的。在并行开发环境中,如果单例模式没有完成,是不能进行测试的。

单例模式与单一职责原则有冲突。*/

//1.静态变量

static  WZTool  * _instance;

//2.+alloc方法内部会调用allocWithZone方法,重写该方法控制永远只分配一次空间

+  (instancetype)  allocWithZone:  (struct_NSZone*)  zone

{

static  dispatch_once_tonceToken;

dispatch_once(&onceToken, ^{

_instance = [super  allocWithZone:zone];

});

return  _instance;

}

//3.提供类方法,方便外界访问,表明身份,说明这是一个单例,注意点:规范share+类名|default+类名|类名

+(instancetype)shareTool

{

return [[self alloc]init];

}

//4.重写copy和mutableCopy方法确保永远只有一个实例对象

-(id)copyWithZone:(NSZone*)zone

{

return_instance;

}

-(id)mutableCopyWithZone:(NSZone*)zone

{

return_instance;

}

上一篇 下一篇

猜你喜欢

热点阅读