1、概述
保证一个类只有一个实例即设置为static并且将构造器设置为私有的,无法去new这个类,并且提供一个访问该实例的全局访问点即设置一个get方法。单例模式就比如windows的任务管理器和windows的回收站,无论你点击多少次,你都只能打开一个窗口。
2、优点
- 由于单例模式只生成一个实例,减少了系统性能开销;
- 单例模式可以在系统设置全局的访问点,优化共享资源访问。
3、常见的五种单例模式实现方式
3.1、饿汉式(线程安全,调用效率高,不能延时加载)
package org.star.单例模式;
//懒汉式单例
public class Hungry {
//1.私有化构造器
private Hungry() {
}
//2.类初始化的时候,应该就立即加载该对象,不会存在并发问题
private static Hungry instance = new Hungry();
//3.提供获取该对象的方法,不用加synchronized,效率高
public static Hungry getInstance() {
return instance;
}
}
//测试改单例模式
class test {
public static void main(String[] args) {
Hungry instance = Hungry.getInstance();
Hungry instance2 = Hungry.getInstance();
//true表示调用方法的到是一个对象
System.out.println(instance == instance2);
}
}