《设计模式专栏》

单例模式学习笔记 by:西瓜

2018-06-19  本文已影响114人  不够果断是种癌

该文参考与百度百科。仅用于自我学习。

什么叫单例模式?

百度上面是这样定义的:单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。

单例模式最初的定义出现于《设计模式》保证一个类仅有一个实例,并提供一个访问它的全局访问点。一个类有且仅有一个实例,并且自行实例化向整个系统提供。

单例模式要点?

1.某个类只能有一个实例。

2.必须自行创建这个实例。

3.必须自行像整个系统提供这个实例。

具体的实现要点?

1.单例模式的类只提供私有的构造函数。

2.类定义中含有一个该类的静态私有对象。

3.该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。

优缺点?

1.单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。

缺点

1.虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。可以通过使用静态初始化解决此问题。

2.使用单例对象(尤其在类库中定义的对象)时,不能使用new关键字实例化对象。

3.其他类可以删除对象实例,但这样会导致单例类中出现悬浮引用。

单例模式分为哪几种?

懒汉式:懒汉式是时间换空间省空间,也就是每次获取实例都会进行判断,看是否需要创建实例,浪费判断的时间。当然,如果一直没有人使用的话,那就不会创建实例,则节约内存空间。

饿汉式:饿汉式是的空间换时间省时间,当类装载的时候就会创建类实例,不管你用不用,先创建出来,然后每次调用的时候,就不需要再判断了,节省了运行时间。

单例的严谨性?

这里附上一个代码测试结果,什么样的单例写法才是正确的。传送门:《单例严谨性测试》

这个内容是<NSCopying>,详情请点击传送门

思考:1.单例为什么这么写?

           2.单例的原理?

           3.项目中大量使用单例好吗?

           4.单例的适用场景? 

           5.适用场景的依据?

           6.饿氏单例为什么很少使用?

上一篇 下一篇

猜你喜欢

热点阅读