本篇文章主要介绍了"深入解析单例模式",主要涉及到方面的内容,对于软件工程感兴趣的同学可以参考一下:
单例模式在程序设计中非常的常见,一般来说,某些类,我们希望在程序运行期间有且只有一个实例,原因可能是该类的创建需要消耗系统过多的资源、花费很多的时间,或者业...
单例模式在程序设计中非常的常见,一般来说,某些类,我们希望在程序运行期间有且只有一个实例,原因可能是该类的创建需要消耗系统过多的资源、花费很多的时间,或者业务上客观就要求了只能有一个实例。一个场景就是:我们的应用程序有一些配置文件,我们希望只在系统启动的时候读取这些配置文件,并将这些配置保存在内存中,以后在程序中使用这些配置文件信息的时候不必再重新读取。
定义:
由于某种需要,要保证一个类在程序的生命周期当中只有一个实例,并且提供该实例的全局访问方法。
结构:
一般包含三个要素:
1.私有的静态的实例对象 private static instance
2.私有的构造函数(保证在该类外部,无法通过new的方式来创建对象实例) private Singleton(){}
3.公有的、静态的、访问该实例对象的方法 public static Singleton getInstance(){}
UML类图:

分类:
单例模式就实例的创建时机来划分可分为:懒汉式与饥汉式两种。
举个日常生活中的例子:
妈妈早上起来为我们做饭吃,饭快做好的时候,一般都会叫我们起床吃饭,这是一般的日常情况。如果饭还没有好的时候,我们就自己起来了(这时候妈妈还没有叫我们起床),这种情况在单例模式中称之为饥汉式(妈妈还没有叫我们起床,我们自己就起来的,就是外部还没有调用自己,自己的实例就已经创建好了)。如果饭做好了,妈妈叫我们起床之后,我们才慢吞吞的起床,这种情况在单例模式中称之为懒汉式(饭都做好了,妈妈叫你起床之后,自己才起的,能不懒汉吗?就是外部对该类的方法发出调用之后,该实例才建立的)。
懒汉式:顾名思义懒汉式就是应用刚启动的时候,并不创建实例,当外部调用该类的实例或者该类实例方法的时候,才创建该类的实例。是以时间换空间。
懒汉式的优点:实例在被使用的时候才被创建,可以节省系统资源,体现了延迟加载的思想。