单例设计模式是指,单例对象的类,只允许实例一个对象,这样,在jvm堆内存中,就只开辟了一块空间来存储这个对象,这种设计的优点是避免了内存中空间的浪费,避免频繁的创建销毁对象,为整个系统提供一个全局的访问的。打比方,windows桌面,我们已经点开了一个回收站,当我们再点击一次回收站的时候,不会再弹出一个回收站的弹窗。

饿汉式

class Singleton{
	//私有化构造函数,让外部不能创建这个类的对象
	private Singleton (){}

	//实例化这个类,并且使用static关键字,是在类加载到内存的
    //时候就初始化,实例化这个类,使用final关键字,是代表这个变量的值
    //是不能变的了。
	private static final Singleton singleton= new Singleton();

	//对外暴露一个接口,使用static关键字修饰这个方法,代表是
    //类名直接调用这个方法。
	public static Singleton getInstance(){
		return singleton;
	}
}

懒汉式

class Singleton{
	private Singleton(){}
        
	private static final Singleton singleton=null;

	public static Singleton getInstance(){
	if(singleton==null){
		syschronized(Singleton.class){
	        if(singleton==null){
			singleton=new Singleton();
		 }
		}
	}
	return singleton;	
}

饿汉式 ,线程不是安全的,当有多个线程运行的时候,可能会出现线程安全问题,导致数据不正确,但是正因为如此,他的效率是更高的。懒汉式,是线程安全的,因为加了syschronized锁,所以每次实例化对象要判断锁,所以他的效率低。开发中一般用饿汉式。