单例模式

2017-10-24  本文已影响0人  风车过也

什么叫单例模式

是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例

单例简介

单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义

iOS单例的定义

+(SingalClass*)shareInstance {

//利用GCD创建一个单例模式

//第一个参数predicate,该参数是检查后面第二个参数所代表的代码块是否被调用的谓词,第二个参数则是在整个应用程序中只会被调用一次的代码块。dispach_once函数中的代码块只会被执行一次,而且还是线程安全的。

static dispatch_once_t once;

dispatch_once(&once, ^{

single=[[SingalClass alloc] init];

});

return single;

}

单例优缺点

优点:

1:一个类只被实例化一次,提供了对唯一实例的受控访问。

2:节省系统资源

3:允许可变数目的实例。

缺点:

1:一个类只有一个对象,可能造成责任过重,在一定程度上违背了“单一职责原则”。

2:由于单利模式中没有抽象层,因此单例类的扩展有很大的困难。

3:滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出;如果实例化的对象长时间不被利用,系统会认为是垃圾而被回收,这将导致对象状态的丢失。

上一篇 下一篇

猜你喜欢

热点阅读