单例模式:确保某一个类只有一个实例。
优点:
1.由于单利模式在内存中只有一个实例,减少了内存的开支,特别是一个对象需要频繁的创建,销毁时,而创建销毁的性能又无法优化,单例模式,就可以解决此问题。
2.单例模式可以在系统中设置全局的访问点,优化和共享资源访问,例如设计一个类负责数据表的映射处理。
应用场景:
1. windows的任务管理器就是单例模式。
2. Windows的回收站也是单例模式。
3.在项目中读取配置文件的类,一般只需要创建一个对象即可。(没有必要每次读取配置文件时都要创建一个对象)
4.数据库连接池一般采用的也是单例模式,因为数据库连接是一种数据资源。
5.Spring中的bean默认的是单利模式,这样方便Spring容器的管理。
6.网站计数器采用的也是单例模式,负责难以同步。
代码实现
第一种创建方式(典型的饿汉模式)
第二种创建方式(JAVA并发下安全的饿汉模式)
第三种创建方式(典型的懒汉模式)
第四种创建方式(使用静态块创建,在类加载时已经创建)
第五中创建方式(使用内部类创建)
第六种创建方式(枚举类)
第七种创建方式(双重检测锁方式)
这7中方式可以使一个对象只有一个实例。但是除了枚举方式的创建其余的创建方式均可通过反射和反序列化破解。
我们就拿饿汉模式创建单例模式的方式进行测试。
我们可以看看运行的结果,使用反射创建出的对象并不是同一个。