欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA编写单例(Singleton)模式

程序员文章站 2022-07-14 09:03:56
...

单例(Singleton)模式:在Java应用程序中,一个类Class只有一个实例存在。

第一种写法形式(饿汉式):
定义一个类,它的构造函数为private的,它有一个private的static的该类变量,在类初始化时实例化,通过public的getInstance方法获取对它的引用,继而调用其中的方法。

Public class Singleton {
	//私有化构造函数
	private Singleton(){}
	//在本类创建唯一实例对象,使用私有静态成员变量保存
	private static Singleton instance = new Singleton();
	//这里是一个供外部访问本class的静态方法,可以直接访问
	public static Singleton getInstance() {
		return instance;
	}
}

特点:在类加载的时候就会创建对象;

好处:类,只会加载一次,所以这种写法可以保证对象的唯一性;

弊端:因为类加载的时候就会创建对象,所以有的时候还不需要使用对象,就会创建对象,造成内存的浪费;

第二种写法形式(懒汉式):

public class Singleton {
	//私有化构造函数
	private Singleton(){}
	private static Singleton instance = null;
	public static synchronized Singleton getInstance() {
		//不用每次都进行生成对象,只是第一次,使用时才生成实例,提高效率
		if (instance==null)
		instance=new Singleton();
		return instance;
	}
}

特点:类加载的时候不创建对象,只有第一次调用获取函数时才创建对象;

好处:可以避免出现内存浪费的问题;

弊端:多线程环境下不能保证对象的唯一性;